ps/output.c: Replace strcpy() with snprintf() in show_one_proc().

This strcpy() should normally not overflow outbuf, but names can be
overridden (via -o). Also, check "amount" in all cases.
This commit is contained in:
Qualys Security Advisory 1970-01-01 00:00:00 +00:00 committed by Craig Small
parent 97408d8b10
commit 1d9ddb615a

View File

@ -2043,7 +2043,10 @@ void show_one_proc(const proc_t *restrict const p, const format_node *restrict f
/* prepare data and calculate leftpad */
if(likely(p) && likely(fmt->pr)) amount = (*fmt->pr)(outbuf,p);
else amount = strlen(strcpy(outbuf, fmt->name)); /* AIX or headers */
else amount = snprintf(outbuf, OUTBUF_SIZE, "%s", fmt->name); /* AIX or headers */
if(amount < 0) outbuf[amount = 0] = '\0';
else if(amount >= OUTBUF_SIZE) outbuf[amount = OUTBUF_SIZE-1] = '\0';
switch((fmt->flags) & CF_JUST_MASK){
case 0: /* for AIX, assigned outside this file */