From 6d3667562e63aecf85be41d2bf2eee4bdf03e85e Mon Sep 17 00:00:00 2001 From: Kirk McKusick Date: Fri, 8 Jul 1994 00:48:35 -0800 Subject: [PATCH] since size_t is unsigned must check for overflow incrementally (from karels) SCCS-vsn: sys/kern/uipc_syscalls.c 8.5 --- usr/src/sys/kern/uipc_syscalls.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/usr/src/sys/kern/uipc_syscalls.c b/usr/src/sys/kern/uipc_syscalls.c index f4893a1212..158aaca25d 100644 --- a/usr/src/sys/kern/uipc_syscalls.c +++ b/usr/src/sys/kern/uipc_syscalls.c @@ -477,10 +477,9 @@ sendit(p, s, mp, flags, retsize) auio.uio_resid = 0; iov = mp->msg_iov; for (i = 0; i < mp->msg_iovlen; i++, iov++) { - if (iov->iov_len < 0) - return (EINVAL); - if ((auio.uio_resid += iov->iov_len) < 0) + if (auio.uio_resid + iov->iov_len < auio.uio_resid) return (EINVAL); + auio.uio_resid += iov->iov_len; } if (mp->msg_name) { if (error = sockargs(&to, mp->msg_name, mp->msg_namelen, @@ -742,10 +741,9 @@ recvit(p, s, mp, namelenp, retsize) auio.uio_resid = 0; iov = mp->msg_iov; for (i = 0; i < mp->msg_iovlen; i++, iov++) { - if (iov->iov_len < 0) - return (EINVAL); - if ((auio.uio_resid += iov->iov_len) < 0) + if (auio.uio_resid + iov->iov_len < auio.uio_resid) return (EINVAL); + auio.uio_resid += iov->iov_len; } #ifdef KTRACE if (KTRPOINT(p, KTR_GENIO)) { -- 2.20.1