s3: Make QueryDispInfo and QueryInfo match for guest
authorVolker Lendecke <vl@samba.org>
Sat, 19 Feb 2011 16:44:48 +0000 (17:44 +0100)
committerVolker Lendecke <vl@samba.org>
Sun, 20 Feb 2011 09:23:29 +0000 (10:23 +0100)
source3/passdb/pdb_ads.c

index bcb803b3967ed1c0076577c695bbac9b0fcd0875..0dc39fd308de7394da7a174a2a95b34407506969 100644 (file)
@@ -1956,6 +1956,7 @@ static bool pdb_ads_search_filter(struct pdb_methods *m,
        for (i=0; i<num_users; i++) {
                struct samr_displayentry *e;
                struct dom_sid sid;
+               uint32_t ctrl;
 
                e = &sstate->entries[sstate->num_entries];
 
@@ -1966,18 +1967,30 @@ static bool pdb_ads_search_filter(struct pdb_methods *m,
                }
                sid_peek_rid(&sid, &e->rid);
                e->acct_flags = ACB_NORMAL;
-               e->account_name = tldap_talloc_single_attribute(
-                       users[i], "samAccountName", sstate->entries);
+
+               if (e->rid == DOMAIN_RID_GUEST) {
+                       /*
+                        * Guest is specially crafted in s3. Make
+                        * QueryDisplayInfo match QueryUserInfo
+                        */
+                       e->account_name = lp_guestaccount();
+                       e->fullname = lp_guestaccount();
+                       e->description = "";
+                       e->acct_flags = ACB_NORMAL;
+               } else {
+                       e->account_name = tldap_talloc_single_attribute(
+                               users[i], "samAccountName", sstate->entries);
+                       e->fullname = tldap_talloc_single_attribute(
+                               users[i], "displayName", sstate->entries);
+                       e->description = tldap_talloc_single_attribute(
+                               users[i], "description", sstate->entries);
+               }
                if (e->account_name == NULL) {
                        return false;
                }
-               e->fullname = tldap_talloc_single_attribute(
-                        users[i], "displayName", sstate->entries);
                if (e->fullname == NULL) {
                        e->fullname = "";
                }
-               e->description = tldap_talloc_single_attribute(
-                        users[i], "description", sstate->entries);
                if (e->description == NULL) {
                        e->description = "";
                }