OSDN Git Service

* syscalls.cc (seteuid32): Treat ILLEGAL_UID invalid.
authorcorinna <corinna>
Fri, 13 Sep 2002 09:00:28 +0000 (09:00 +0000)
committercorinna <corinna>
Fri, 13 Sep 2002 09:00:28 +0000 (09:00 +0000)
(setegid32): Treat ILLEGAL_GID invalid.

winsup/cygwin/ChangeLog
winsup/cygwin/syscalls.cc

index 4f02920..13902b1 100644 (file)
@@ -1,3 +1,8 @@
+2002-09-13  Corinna Vinschen  <corinna@vinschen.de>
+
+       * syscalls.cc (seteuid32): Treat ILLEGAL_UID invalid.
+       (setegid32): Treat ILLEGAL_GID invalid.
+
 2002-09-10  Pierre Humblet <pierre.humblet@ieee.org>
 
        * grp.cc (initgroups): Call groups::clear_supp to free the
index 657a40c..8c2b96b 100644 (file)
@@ -1943,14 +1943,18 @@ seteuid32 (__uid32_t uid)
   debug_printf ("uid: %d myself->gid: %d", uid, myself->gid);
 
   if (!wincap.has_security ()
-      || (uid == myself->uid
-         && !cygheap->user.groups.ischanged)
-      || uid == ILLEGAL_UID)
+      || (uid == myself->uid && !cygheap->user.groups.ischanged))
     {
       debug_printf ("Nothing happens");
       return 0;
     }
 
+  if (uid == ILLEGAL_UID)
+    {
+      set_errno (EINVAL);
+      return -1;
+    }
+
   sigframe thisframe (mainthread);
   cygsid usersid;
   user_groups &groups = cygheap->user.groups;
@@ -2122,11 +2126,15 @@ setuid (__uid16_t uid)
 extern "C" int
 setegid32 (__gid32_t gid)
 {
-  if ((!wincap.has_security ()) ||
-      (gid == myself->gid) ||
-      (gid == ILLEGAL_GID))
+  if (!wincap.has_security () || gid == myself->gid)
     return 0;
 
+  if (gid == ILLEGAL_GID)
+    {
+      set_errno (EINVAL);
+      return -1;
+    }
+
   sigframe thisframe (mainthread);
   user_groups * groups = &cygheap->user.groups;
   cygsid gsid;