From 06d8e47ce45b63e14e12f4ab2f34a153e067faf9 Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Mon, 7 Feb 2005 23:25:26 +0000 Subject: [PATCH 1/1] * grp.c: Oops. Didn't see other Solaris fix in #72292. svn path=/trunk/mono/; revision=40277 --- support/ChangeLog | 4 ++++ support/grp.c | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/support/ChangeLog b/support/ChangeLog index 998e23b4d0f..8b6c02ee21c 100644 --- a/support/ChangeLog +++ b/support/ChangeLog @@ -1,3 +1,7 @@ +2005-02-07 Jonathan Pryor + + * grp.c: Oops. Didn't see other Solaris fix in #72292. + 2005-02-07 Jonathan Pryor * grp.c, pwd.c: Clear errno before calling the actual calls, as errno may diff --git a/support/grp.c b/support/grp.c index 7540e478bc4..99ef795c139 100644 --- a/support/grp.c +++ b/support/grp.c @@ -179,6 +179,10 @@ Mono_Posix_Syscall_getgrnam_r (const char *name, } while ((r = getgrnam_r (name, &_grbuf, buf, buflen, gbufp)) && recheck_range (r)); + /* On Solaris, this function returns 0 even if the entry was not found */ + if (r == 0 && !(*gbufp)) + r = errno = ENOENT; + if (r == 0 && copy_group (gbuf, &_grbuf) == -1) r = errno = ENOMEM; free (buf); @@ -218,6 +222,10 @@ Mono_Posix_Syscall_getgrgid_r (mph_gid_t gid, } while ((r = getgrgid_r (gid, &_grbuf, buf, buflen, gbufp)) && recheck_range (r)); + /* On Solaris, this function returns 0 even if the entry was not found */ + if (r == 0 && !(*gbufp)) + r = errno = ENOENT; + if (r == 0 && copy_group (gbuf, &_grbuf) == -1) r = errno = ENOMEM; free (buf); -- 2.25.1