Deal with _POSIX_SAVED_IDS when relinquishing privileges
authortholo <tholo@openbsd.org>
Sun, 22 Dec 1996 03:49:44 +0000 (03:49 +0000)
committertholo <tholo@openbsd.org>
Sun, 22 Dec 1996 03:49:44 +0000 (03:49 +0000)
gnu/libexec/uucp/libunix/init.c
gnu/libexec/uucp/libunix/spawn.c

index 8a3c416..57a5e77 100644 (file)
@@ -272,8 +272,10 @@ usysdep_initialize (puuconf,iflags)
       && geteuid () == 0)
     {
       q = getpwnam (OWNER);
-      if (q != NULL)
+      if (q != NULL) P
+       seteuid (q->pw_uid);
        setuid (q->pw_uid);
+      }
     }
 
   if ((iflags & INIT_GETCWD) != 0)
@@ -371,8 +373,10 @@ usysdep_exit (fsuccess)
 boolean fsysdep_other_config (z)
      const char *z;
 {
-  (void) setuid (getuid ());
+  (void) setegid (getgid ());
   (void) setgid (getgid ());
+  (void) seteuid (getuid ());
+  (void) setuid (getuid ());
   return TRUE;
 }
 \f
index d39e2ba..229616c 100644 (file)
@@ -353,8 +353,10 @@ ixsspawn (pazargs, aidescs, fkeepuid, fkeepenv, zchdir, fnosigs, fshell,
   if (! fkeepuid)
     {
       /* Return to the uid of the invoking user.  */
-      (void) setuid (getuid ());
+      (void) setegid (getgid ());
       (void) setgid (getgid ());
+      (void) seteuid (getuid ());
+      (void) setuid (getuid ());
     }
   else
     {