]> sourceware.org Git - newlib-cygwin.git/commitdiff
* security.cc (get_user_local_groups): Use LookupAccountSid to find the
authorCorinna Vinschen <corinna@vinschen.de>
Sat, 14 Dec 2002 16:57:25 +0000 (16:57 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Sat, 14 Dec 2002 16:57:25 +0000 (16:57 +0000)
local equivalent of BUILTIN.

winsup/cygwin/ChangeLog
winsup/cygwin/security.cc

index 4a19c5a6a3b71691b1b9b0e0d1b4810e248aa9e3..aafc26d5764cbc7574cc35bd90d952321917561f 100644 (file)
@@ -1,3 +1,8 @@
+2002-12-14  Pierre Humblet  <pierre.humblet@ieee.org>
+
+       * security.cc (get_user_local_groups): Use LookupAccountSid to find the
+       local equivalent of BUILTIN.
+
 2002-12-14  Christopher Faylor  <cgf@redhat.com>
 
        * pipe.cc (make_pipe): Set fork fixup flag for read pipe.
index 784d75527a0273b20318f6e2f996a322e933c54e..1416ad566da4140f1acb142b360350df8a70a01d 100644 (file)
@@ -389,16 +389,19 @@ get_user_local_groups (cygsidlist &grp_list, PSID pusersid)
       return FALSE;
     }
 
-  char bgroup[sizeof ("BUILTIN\\") + GNLEN] = "BUILTIN\\";
+  char bgroup[INTERNET_MAX_HOST_NAME_LENGTH + GNLEN + 2];
   char lgroup[INTERNET_MAX_HOST_NAME_LENGTH + GNLEN + 2];
-  const DWORD blen = sizeof ("BUILTIN\\") - 1;
-  DWORD llen = INTERNET_MAX_HOST_NAME_LENGTH + 1;
-  if (!GetComputerNameA (lgroup, &llen))
+  DWORD blen, llen;
+  SID_NAME_USE use;
+
+  blen = llen = INTERNET_MAX_HOST_NAME_LENGTH + 1;
+  if (!LookupAccountSid (NULL, well_known_admins_sid, lgroup, &llen, bgroup, &blen, &use)
+      || !GetComputerNameA (lgroup, &(llen = INTERNET_MAX_HOST_NAME_LENGTH + 1)))
     {
       __seterrno ();
       return FALSE;
     }
-  lgroup[llen++] = '\\';
+  bgroup[blen++] = lgroup[llen++] = '\\';
 
   for (DWORD i = 0; i < cnt; ++i)
     if (is_group_member (buf[i].lgrpi0_name, pusersid, grp_list))
@@ -407,8 +410,8 @@ get_user_local_groups (cygsidlist &grp_list, PSID pusersid)
        DWORD glen = sizeof (gsid);
        char domain[INTERNET_MAX_HOST_NAME_LENGTH + 1];
        DWORD dlen = sizeof (domain);
-       SID_NAME_USE use = SidTypeInvalid;
 
+       use = SidTypeInvalid;
        sys_wcstombs (bgroup + blen, buf[i].lgrpi0_name, GNLEN + 1);
        if (!LookupAccountName (NULL, bgroup, gsid, &glen, domain, &dlen, &use))
          {
This page took 0.041375 seconds and 5 git commands to generate.