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; }