From 3c2b29eec6c095fdf0191419badac3b945d71b82 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 28 May 2005 06:11:39 +0000 Subject: [PATCH] (getlogin_r): Don't set errno to 0 on return. --- lib/getlogin_r.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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; -- 2.30.2