s4:samr: allow builtin groups for samr_OpenGroup.
authorMichael Adam <obnox@samba.org>
Tue, 29 Apr 2014 11:31:42 +0000 (13:31 +0200)
committerAndrew Bartlett <abartlet@samba.org>
Sat, 3 May 2014 05:57:13 +0000 (07:57 +0200)
This fixes nsswitch getgrgid for builtins.

Signed-off-by: Michael Adam <obnox@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/rpc_server/samr/dcesrv_samr.c

index 3e58a44fb82d2f797e2239b11ea7cd075c0bf1a6..eacbe7da7b46797a03ae013268a99c03e5e8aed9 100644 (file)
@@ -1746,13 +1746,22 @@ static NTSTATUS dcesrv_samr_OpenGroup(struct dcesrv_call_state *dce_call, TALLOC
        }
 
        /* search for the group record */
-       ret = gendb_search(d_state->sam_ctx,
-                          mem_ctx, d_state->domain_dn, &msgs, attrs,
-                          "(&(objectSid=%s)(objectClass=group)"
-                          "(|(groupType=%d)(groupType=%d)))",
-                          ldap_encode_ndr_dom_sid(mem_ctx, sid),
-                          GTYPE_SECURITY_UNIVERSAL_GROUP,
-                          GTYPE_SECURITY_GLOBAL_GROUP);
+       if (d_state->builtin) {
+               ret = gendb_search(d_state->sam_ctx,
+                                  mem_ctx, d_state->domain_dn, &msgs, attrs,
+                                  "(&(objectSid=%s)(objectClass=group)"
+                                  "(groupType=%d))",
+                                  ldap_encode_ndr_dom_sid(mem_ctx, sid),
+                                  GTYPE_SECURITY_BUILTIN_LOCAL_GROUP);
+       } else {
+               ret = gendb_search(d_state->sam_ctx,
+                                  mem_ctx, d_state->domain_dn, &msgs, attrs,
+                                  "(&(objectSid=%s)(objectClass=group)"
+                                  "(|(groupType=%d)(groupType=%d)))",
+                                  ldap_encode_ndr_dom_sid(mem_ctx, sid),
+                                  GTYPE_SECURITY_UNIVERSAL_GROUP,
+                                  GTYPE_SECURITY_GLOBAL_GROUP);
+       }
        if (ret == 0) {
                return NT_STATUS_NO_SUCH_GROUP;
        }