* grp.c: Oops. Didn't see other Solaris fix in #72292.
authorJonathan Pryor <jpryor@novell.com>
Mon, 7 Feb 2005 23:25:26 +0000 (23:25 -0000)
committerJonathan Pryor <jpryor@novell.com>
Mon, 7 Feb 2005 23:25:26 +0000 (23:25 -0000)
svn path=/trunk/mono/; revision=40277

support/ChangeLog
support/grp.c

index 998e23b4d0fccc41cd928c61a611206fa419976d..8b6c02ee21cc9e426e6dcc68912d88ff1d10bf1a 100644 (file)
@@ -1,3 +1,7 @@
+2005-02-07  Jonathan Pryor  <jonpryor@vt.edu>
+
+       * grp.c: Oops.  Didn't see other Solaris fix in #72292.
+
 2005-02-07  Jonathan Pryor  <jonpryor@vt.edu>
 
        * grp.c, pwd.c: Clear errno before calling the actual calls, as errno may
index 7540e478bc4135f48ec29f17ddc46e550749a51c..99ef795c139a705bad4b08a867a9d9f0f2a86a56 100644 (file)
@@ -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);