From 2ca29f568956b045f5e3ec27a7dc45683fbd5c67 Mon Sep 17 00:00:00 2001 From: Simon Wilkinson Date: Fri, 30 Mar 2012 19:37:36 +0100 Subject: [PATCH] rx: Handle negative returns on packet reads rxi_RecvMsg returns an int, because it can return a negative value upon error. Don't store its return value as an unsigned int, because this may hide the potential errors. Modify the error handling loop so that errors get to where they are intended. Reviewed-on: http://gerrit.openafs.org/7087 Tested-by: BuildBot Reviewed-by: Derrick Brashear (cherry picked from commit 438d6ba63cda7d7484c545a4fd181803e84d68eb) Change-Id: I4f479a4e722b5f298ba2be4e86816ebddede701d Reviewed-on: http://gerrit.openafs.org/10733 Tested-by: BuildBot Reviewed-by: Derrick Brashear Reviewed-by: Andrew Deason Reviewed-by: Stephan Wiesand --- src/rx/rx_packet.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rx/rx_packet.c b/src/rx/rx_packet.c index 7ac3a5710..1a5f4df7a 100644 --- a/src/rx/rx_packet.c +++ b/src/rx/rx_packet.c @@ -1427,7 +1427,7 @@ rxi_ReadPacket(osi_socket socket, struct rx_packet *p, afs_uint32 * host, u_short * port) { struct sockaddr_in from; - unsigned int nbytes; + int nbytes; afs_int32 rlen; afs_uint32 tlen, savelen; struct msghdr msg; @@ -1466,7 +1466,7 @@ rxi_ReadPacket(osi_socket socket, struct rx_packet *p, afs_uint32 * host, p->wirevec[p->niovecs - 1].iov_len = savelen; p->length = (u_short)(nbytes - RX_HEADER_SIZE); - if ((nbytes > tlen) || (p->length & 0x8000)) { /* Bogus packet */ + if (nbytes < 0 || (nbytes > tlen) || (p->length & 0x8000)) { /* Bogus packet */ if (nbytes < 0 && errno == EWOULDBLOCK) { if (rx_stats_active) rx_MutexIncrement(rx_stats.noPacketOnRead, rx_stats_mutex); -- 2.39.5