From 0e1964bfbcaccb3e9c9ce491d09ff56bf2c9979e Mon Sep 17 00:00:00 2001 From: Qualys Security Advisory Date: Thu, 1 Jan 1970 00:00:00 +0000 Subject: [PATCH] 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)"). --- skill.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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++; }