r91: Fix lsalookupnames. Previously we'd fail if we didn't find the name, but
authorJim McDonough <jmcd@samba.org>
Tue, 6 Apr 2004 22:02:47 +0000 (22:02 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:51:08 +0000 (10:51 -0500)
we never checked if it was a domain user and didn't find a local one.

source/lib/util_sid.c
source/rpc_server/srv_lsa_nt.c

index 50bbb4c72c61348f7e3457320035017a1aa8ac19..e317f8f84e2f1b8756b039d8434ee48516779c4c 100644 (file)
@@ -201,6 +201,13 @@ void split_domain_name(const char *fullname, char *domain, char *name)
                fstrcpy(domain, full_name);
                fstrcpy(name, p+1);
        } else {
+               if(!lp_domain_logons()) {
+                       fstrcpy(domain, global_myname());
+                       fstrcpy(name, full_name);
+               } else {
+                       fstrcpy(domain, lp_workgroup());
+                       fstrcpy(name, full_name);
+               }
                fstrcpy(domain, global_myname());
                fstrcpy(name, full_name);
        }
index 07c024e1ca98f913f50b9a52cc62f9be71879a37..9801ce47f8fab2a7c16d2c3f947c33c031fb5264 100644 (file)
@@ -165,6 +165,12 @@ static void init_lsa_rid2s(DOM_R_REF *ref, DOM_RID2 *rid2,
 
                status = lookup_name(dom_name, user, &sid, &name_type);
 
+               if((name_type == SID_NAME_UNKNOWN) && (lp_server_role() == ROLE_DOMAIN_MEMBER)  && (strncmp(dom_name, full_name, strlen(dom_name)) != 0)) {
+                       DEBUG(5, ("init_lsa_rid2s: domain name not provided and local account not found, using member domain\n"));
+                       fstrcpy(dom_name, lp_workgroup());
+                       status = lookup_name(dom_name, user, &sid, &name_type);
+               }
+
                DEBUG(5, ("init_lsa_rid2s: %s\n", status ? "found" : 
                          "not found"));