uinfo.cc

Pierre A. Humblet Pierre.Humblet@ieee.org
Mon Jun 24 16:59:00 GMT 2002


Looks like I had introduced a bug. A child had the wrong 
uid/gid (but the right token), following setEuid(). This fixes it. 
Sorry about that.

Pierre

2002-06-24  Pierre Humblet <pierre.humblet@ieee.org>

	* uinfo.cc (internal_getlogin): Save uid & gid in myself, not in user.
	(uinfo_init): Propagate uid & gid from myself to user, partially
	reverting 2002-06-12.

--- uinfo.cc.orig       2002-06-24 18:48:44.000000000 -0400
+++ uinfo.cc    2002-06-24 18:50:14.000000000 -0400
@@ -88,13 +88,13 @@
 
   if (pw)
     {
-      user.real_uid = pw->pw_uid;
-      user.real_gid = pw->pw_gid;
+      myself->uid = pw->pw_uid;
+      myself->gid = pw->pw_gid;
     }
   else
     {
-      user.real_uid = DEFAULT_UID;
-      user.real_gid = DEFAULT_GID;
+      myself->uid = DEFAULT_UID;
+      myself->gid = DEFAULT_GID;
     }
 
   (void) cygheap->user.ontherange (CH_HOME, pw);
@@ -109,8 +109,8 @@
     internal_getlogin (cygheap->user); /* Set the cygheap->user. */
 
   /* Real and effective uid/gid are identical on process start up. */
-  myself->uid = cygheap->user.orig_uid = cygheap->user.real_uid;
-  myself->gid = cygheap->user.orig_gid = cygheap->user.real_gid;
+  cygheap->user.orig_uid = cygheap->user.real_uid = myself->uid;
+  cygheap->user.orig_gid = cygheap->user.real_gid = myself->gid;
   cygheap->user.set_orig_sid();      /* Update the original sid */
 
   cygheap->user.token = INVALID_HANDLE_VALUE; /* No token present */



More information about the Cygwin-patches mailing list