diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2005-05-28 06:11:39 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2005-05-28 06:11:39 +0000 |
commit | 3c2b29eec6c095fdf0191419badac3b945d71b82 (patch) | |
tree | 503da76de830954c9f937369076d9f67ce3ce8c0 /lib/getlogin_r.c | |
parent | c180b24936d0f9b55a27a0fdccfc8ac96521027b (diff) | |
download | gnulib-3c2b29eec6c095fdf0191419badac3b945d71b82.tar.gz |
(getlogin_r): Don't set errno to 0 on return.
Diffstat (limited to 'lib/getlogin_r.c')
-rw-r--r-- | lib/getlogin_r.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/getlogin_r.c b/lib/getlogin_r.c index c02db2fe65..d269b92238 100644 --- a/lib/getlogin_r.c +++ b/lib/getlogin_r.c @@ -44,8 +44,15 @@ getlogin_r (char *name, size_t size) errno = 0; n = getlogin (); + + /* A system function like getlogin_r is never supposed to set errno + to zero, so make sure errno is nonzero here. ENOENT is a + reasonable errno value if getlogin returns NULL. */ + if (!errno) + errno = ENOENT; + if (!n) - return errno ? errno : ENOENT; + return errno; nlen = strlen (n); if (size <= nlen) return ERANGE; |