OSDN Git Service

* uinfo.cc (internal_getlogin): Change parameter list to reflect
authorcorinna <corinna>
Wed, 15 Nov 2000 21:14:27 +0000 (21:14 +0000)
committercorinna <corinna>
Wed, 15 Nov 2000 21:14:27 +0000 (21:14 +0000)
        that `token' is member of cygheap_user now.
        (uinfo_init): Use modified internal_getlogin.
        * syscalls.cc (seteuid): Ditto.

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

index ee586f0..911e8ae 100644 (file)
@@ -1,3 +1,10 @@
+Wed Nov 15 22:08:00 2000  Corinna Vinschen <corinna@vinschen.de>
+
+       * uinfo.cc (internal_getlogin): Change parameter list to reflect
+       that `token' is member of cygheap_user now.
+       (uinfo_init): Use modified internal_getlogin.
+       * syscalls.cc (seteuid): Ditto.
+
 Wed Nov 15 21:56:00 2000  Corinna Vinschen <corinna@vinschen.de>
 
        * cygheap.h: Move `token' and `impersonated' from class _pinfo
index 5691b26..d63ab9b 100644 (file)
@@ -1811,7 +1811,7 @@ setuid (uid_t uid)
   return ret;
 }
 
-extern const char *internal_getlogin (cygheap_user &user, HANDLE token);
+extern const char *internal_getlogin (cygheap_user &user);
 
 /* seteuid: standards? */
 extern "C" int
@@ -1851,12 +1851,12 @@ seteuid (uid_t uid)
              }
 
          cygheap_user user;
-         /* token is used in internal_getlogin() to determine if
+         /* user.token is used in internal_getlogin() to determine if
             impersonation is active. If so, the token is used for
             retrieving user's SID. */
-         HANDLE token = cygheap->user.impersonated ? cygheap->user.token
-                                             : INVALID_HANDLE_VALUE;
-         struct passwd *pw_cur = getpwnam (internal_getlogin (user, token));
+         user.token = cygheap->user.impersonated ? cygheap->user.token
+                                                 : INVALID_HANDLE_VALUE;
+         struct passwd *pw_cur = getpwnam (internal_getlogin (user));
          if (pw_cur != pw_new)
            {
              debug_printf ("Diffs!!! token: %d, cur: %d, new: %d, orig: %d",
index c315396..5fb7cf9 100644 (file)
@@ -25,7 +25,7 @@ details. */
 #include "security.h"
 
 const char *
-internal_getlogin (cygheap_user &user, HANDLE token)
+internal_getlogin (cygheap_user &user)
 {
   char username[MAX_USER_NAME];
   DWORD username_len = MAX_USER_NAME;
@@ -108,8 +108,8 @@ internal_getlogin (cygheap_user &user, HANDLE token)
        }
       if (allow_ntsec)
        {
-         HANDLE ptok = token; /* Which is INVALID_HANDLE_VALUE if no
-                                     impersonation took place. */
+         HANDLE ptok = user.token; /* Which is INVALID_HANDLE_VALUE if no
+                                      impersonation took place. */
          DWORD siz;
          char tu[1024];
          int ret = 0;
@@ -127,7 +127,8 @@ internal_getlogin (cygheap_user &user, HANDLE token)
          else if (!(ret = user.set_sid (((TOKEN_USER *) &tu)->User.Sid)))
            debug_printf ("Couldn't retrieve SID from access token!");
          /* Close token only if it's a result from OpenProcessToken(). */
-         if (ptok != INVALID_HANDLE_VALUE && token == INVALID_HANDLE_VALUE)
+         if (ptok != INVALID_HANDLE_VALUE
+             && user.token == INVALID_HANDLE_VALUE)
            CloseHandle (ptok);
 
          /* If that failes, try to get the SID from localhost. This can only
@@ -190,8 +191,7 @@ uinfo_init ()
   /* If uid is USHRT_MAX, the process is started from a non cygwin
      process or the user context was changed in spawn.cc */
   if (myself->uid == USHRT_MAX)
-    if ((p = getpwnam (internal_getlogin (cygheap->user,
-                                         INVALID_HANDLE_VALUE))) != NULL)
+    if ((p = getpwnam (internal_getlogin (cygheap->user))) != NULL)
       {
        myself->uid = p->pw_uid;
        myself->gid = p->pw_gid;