DragonFlyBSD Kernel Audit
DF-2452 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/disk/dm/flakey/dm_target_flakey.c b/sys/dev/disk/dm/flakey/dm_target_flakey.c
--- a/sys/dev/disk/dm/flakey/dm_target_flakey.c
+++ b/sys/dev/disk/dm/flakey/dm_target_flakey.c
@@ -124,13 +124,16 @@
 {
 	char *arg;
 	unsigned int value;
+	int avail;
 
 	if (argc == 0)
 		return 0;
 
+	avail = argc - 1;  /* remaining args after consuming the count */
 	argc = atoi64(*argv++);  /* # of args for features */
-	if (argc > 6) {
-		kprintf("Invalid # of feature args %d\n", argc);
+	if (argc > 6 || argc > avail) {
+		kprintf("Invalid # of feature args %d (available %d)\n", argc,
+		    avail);
 		return EINVAL;
 	}