diff options
author | Rich Felker <dalias@aerifal.cx> | 2021-02-13 14:03:23 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2021-02-13 14:03:23 -0500 |
commit | 49b6df3d9f3645de55607f1ac60095b22661b334 (patch) | |
tree | 451dacd908751632afc68b3f68320e9004bbc008 /src | |
parent | cc577d0e058b53df5c0fe2ac17890a41d77e94c5 (diff) | |
download | musl-49b6df3d9f3645de55607f1ac60095b22661b334.tar.gz musl-49b6df3d9f3645de55607f1ac60095b22661b334.tar.xz musl-49b6df3d9f3645de55607f1ac60095b22661b334.zip |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/legacy/cuserid.c | 5 |
1 files 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; |