From: Qualys Security Advisory Date: Thu, 1 Jan 1970 00:00:00 +0000 (+0000) Subject: skill: Always NULL-terminate argv. X-Git-Tag: v3.3.15~118 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0e1964bfbcaccb3e9c9ce491d09ff56bf2c9979e;p=procps-ng skill: Always NULL-terminate argv. The memmove() itself does not move the NULL-terminator, because nargs is decremented first. Copy how skill_sig_option() does it: decrement nargs last, and remove the "if (nargs - i)" (we are in "while (i < nargs)"). --- diff --git a/skill.c b/skill.c index 40ec787d..33af11e4 100644 --- a/skill.c +++ b/skill.c @@ -542,10 +542,9 @@ static int snice_prio_option(int *argc, char **argv) if (prio < INT_MIN || INT_MAX < prio) xerrx(EXIT_FAILURE, _("priority %lu out of range"), prio); + memmove(argv + i, argv + i + 1, + sizeof(char *) * (nargs - i)); nargs--; - if (nargs - i) - memmove(argv + i, argv + i + 1, - sizeof(char *) * (nargs - i)); } else i++; }