diff options
author | dg <dg@FreeBSD.org> | 1996-11-29 19:03:42 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1996-11-29 19:03:42 +0000 |
commit | 4ac029cc3831c3d4e6d71496cc508ef89714a6bd (patch) | |
tree | 1a9aca1a3bf236d74e79328a583d713d75a11efb /sys/kern/uipc_socket.c | |
parent | 0d3f6a937369d19bf8c126ec490e9642e96cc689 (diff) | |
download | FreeBSD-src-4ac029cc3831c3d4e6d71496cc508ef89714a6bd.zip FreeBSD-src-4ac029cc3831c3d4e6d71496cc508ef89714a6bd.tar.gz |
Check for error return from uiomove to prevent looping endlessly in
soreceive(). Closes PR#2114.
Submitted by: wpaul
Diffstat (limited to 'sys/kern/uipc_socket.c')
-rw-r--r-- | sys/kern/uipc_socket.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index da9e331..d359d5d 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)uipc_socket.c 8.3 (Berkeley) 4/15/94 - * $Id: uipc_socket.c,v 1.19 1996/07/11 16:31:56 wollman Exp $ + * $Id: uipc_socket.c,v 1.20 1996/10/07 04:32:26 pst Exp $ */ #include <sys/param.h> @@ -708,6 +708,8 @@ dontblock: splx(s); error = uiomove(mtod(m, caddr_t) + moff, (int)len, uio); s = splnet(); + if (error) + goto release; } else uio->uio_resid -= len; if (len == m->m_len - moff) { |