[27816] in CVS-changelog-for-Kerberos-V5
krb5 commit: Fix spin loop reading from KDC TCP socket
daemon@ATHENA.MIT.EDU (Greg Hudson)
Wed Jun 26 14:06:43 2013
Date: Wed, 26 Jun 2013 14:06:37 -0400
From: Greg Hudson <ghudson@mit.edu>
Message-Id: <201306261806.r5QI6bVq010635@drugstore.mit.edu>
To: cvs-krb5@mit.edu
Reply-To: krbdev@mit.edu
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: cvs-krb5-bounces@mit.edu
https://github.com/krb5/krb5/commit/53e5c850e05f011e9e7f25c2032aec51d8b352a9
commit 53e5c850e05f011e9e7f25c2032aec51d8b352a9
Author: Viktor Dukhovni <viktor@twosigma.com>
Date: Tue Jun 25 12:27:42 2013 -0400
Fix spin loop reading from KDC TCP socket
In the k5_sendto code for reading from a TCP socket, detect
end-of-stream when reading the length. Otherwise we can get stuck in
an infinite loop of poll() and read().
[ghudson@mit.edu: commit message]
ticket: 7508
target_version: 1.11.4
tags: pullup
src/lib/krb5/os/sendto_kdc.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/lib/krb5/os/sendto_kdc.c b/src/lib/krb5/os/sendto_kdc.c
index 3e4ec7e..3c31d9f 100644
--- a/src/lib/krb5/os/sendto_kdc.c
+++ b/src/lib/krb5/os/sendto_kdc.c
@@ -853,9 +853,9 @@ service_tcp_fd(krb5_context context, struct conn_state *conn,
nread = SOCKET_READ(conn->fd,
conn->x.in.bufsizebytes + conn->x.in.bufsizebytes_read,
4 - conn->x.in.bufsizebytes_read);
- if (nread < 0) {
+ if (nread <= 0) {
+ e = nread ? SOCKET_ERRNO : ECONNRESET;
TRACE_SENDTO_KDC_TCP_ERROR_RECV_LEN(context, &conn->addr, e);
- e = SOCKET_ERRNO;
goto kill_conn;
}
conn->x.in.bufsizebytes_read += nread;
_______________________________________________
cvs-krb5 mailing list
cvs-krb5@mit.edu
https://mailman.mit.edu/mailman/listinfo/cvs-krb5