DragonFlyBSD Kernel Audit
DF-0114 / fix.diff
← back to finding ↓ download raw
diff --git a/kern/sys_process.c b/kern/sys_process.c
--- a/kern/sys_process.c
+++ b/kern/sys_process.c
@@ -439,7 +439,7 @@
 		uio.uio_iov = &iov;
 		uio.uio_iovcnt = 1;
 		uio.uio_offset = (off_t)(uintptr_t)piod->piod_offs;
-		uio.uio_resid = piod->piod_len;
+		uio.uio_resid = (piod->piod_len > (size_t)SSIZE_MAX) ? 0 : piod->piod_len;
 		uio.uio_segflg = UIO_USERSPACE;
 		uio.uio_td = curthread;
 		switch (piod->piod_op) {