DragonFlyBSD Kernel Audit
DF-0216 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/kern/kern_collect.c b/sys/kern/kern_collect.c
--- a/sys/kern/kern_collect.c
+++ b/sys/kern/kern_collect.c
@@ -244,7 +244,8 @@
 	 */
 	i = start;
 	while (count) {
-		if (req->oldlen - req->oldidx < sizeof(kcollect_t))
+		if (req->oldlen < req->oldidx ||
+		    req->oldlen - req->oldidx < sizeof(kcollect_t))
 			break;
 		if (i == 0)
 			i = kcollect_samples - 1;