>From 49b6df3d9f3645de55607f1ac60095b22661b334 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sat, 13 Feb 2021 14:03:23 -0500 Subject: [PATCH 3/3] fix error return value for cuserid the historical function was specified to return an empty string in the caller-provided buffer, not a null pointer, to indicate error when the argument is non-null. only when the argument is null should it return a null pointer on error. --- src/legacy/cuserid.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/legacy/cuserid.c b/src/legacy/cuserid.c index 07866acf..dcaf73d4 100644 --- a/src/legacy/cuserid.c +++ b/src/legacy/cuserid.c @@ -9,12 +9,13 @@ char *cuserid(char *buf) static char usridbuf[L_cuserid]; struct passwd pw, *ppw; long pwb[256]; + if (buf) *buf = 0; getpwuid_r(geteuid(), &pw, (void *)pwb, sizeof pwb, &ppw); if (!ppw) - return 0; + return buf; size_t len = strnlen(pw.pw_name, L_cuserid); if (len == L_cuserid) - return 0; + return buf; if (!buf) buf = usridbuf; memcpy(buf, pw.pw_name, len+1); return buf; -- 2.21.0