diff options
author | dg <dg@FreeBSD.org> | 1994-09-02 14:04:39 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1994-09-02 14:04:39 +0000 |
commit | 454da81a5a43093536e525ae1926bf3810d901b9 (patch) | |
tree | abc69b2a24177b2ed7ab2c122b8e387106eab20e | |
parent | 08512a312787c805fb1d699dd396b240686e267d (diff) | |
download | FreeBSD-src-454da81a5a43093536e525ae1926bf3810d901b9.zip FreeBSD-src-454da81a5a43093536e525ae1926bf3810d901b9.tar.gz |
Make sure that uio_resid isn't negative in read().
-rw-r--r-- | sys/kern/sys_generic.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c index af58a5c..bf88b5a 100644 --- a/sys/kern/sys_generic.c +++ b/sys/kern/sys_generic.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)sys_generic.c 8.5 (Berkeley) 1/21/94 - * $Id$ + * $Id: sys_generic.c,v 1.3 1994/08/02 07:42:38 davidg Exp $ */ #include <sys/param.h> @@ -86,7 +86,11 @@ read(p, uap, retval) aiov.iov_len = uap->nbyte; auio.uio_iov = &aiov; auio.uio_iovcnt = 1; + auio.uio_resid = uap->nbyte; + if (auio.uio_resid < 0) + return (EINVAL); + auio.uio_rw = UIO_READ; auio.uio_segflg = UIO_USERSPACE; auio.uio_procp = p; |