]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
r4964: Fix our lsa lookupsid $OURDOMAINSID-500.
authorGünther Deschner <gd@samba.org>
Mon, 24 Jan 2005 17:29:12 +0000 (17:29 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:55:09 +0000 (10:55 -0500)
Give the admin-user (rid 500) a chance to be found in passdb, not
returning the (possibly obscure) first entry of "admin users" before
that.

Guenther

source/passdb/passdb.c

index bd76941c6178bb4205916d2a56d466f271eeec0f..666e5072b67e410bdd965000b02213a6a8e4a5ff 100644 (file)
@@ -759,24 +759,11 @@ BOOL local_lookup_sid(const DOM_SID *sid, char *name, enum SID_NAME_USE *psid_na
        
        DEBUG(5,("local_lookup_sid: looking up RID %u.\n", (unsigned int)rid));
        
-       if (rid == DOMAIN_USER_RID_ADMIN) {
-               const char **admin_list = lp_admin_users(-1);
-               *psid_name_use = SID_NAME_USER;
-               if (admin_list) {
-                       const char *p = *admin_list;
-                       if(!next_token(&p, name, NULL, sizeof(fstring)))
-                               fstrcpy(name, "Administrator");
-               } else {
-                       fstrcpy(name, "Administrator");
-               }
-               return True;
-       }
 
+       /* see if the passdb can help us with the name of the user */
        if (!NT_STATUS_IS_OK(pdb_init_sam(&sam_account))) {
                return False;
        }
-       
-       /* see if the passdb can help us with the name of the user */
 
        /* BEING ROOT BLLOCK */
        become_root();
@@ -807,6 +794,20 @@ BOOL local_lookup_sid(const DOM_SID *sid, char *name, enum SID_NAME_USE *psid_na
                return True;
        }
 
+       if (rid == DOMAIN_USER_RID_ADMIN) {
+               const char **admin_list = lp_admin_users(-1);
+               *psid_name_use = SID_NAME_USER;
+               if (admin_list) {
+                       const char *p = *admin_list;
+                       if(!next_token(&p, name, NULL, sizeof(fstring))) {
+                               fstrcpy(name, "Administrator");
+                       }
+               } else {
+                       fstrcpy(name, "Administrator");
+               }
+               return True;
+       }
+
        if (algorithmic_pdb_rid_is_user(rid)) {
                uid_t uid;
                struct passwd *pw = NULL;