Part of fix for #5551. Split out the group enumeration functions to a BUILTIN and...
authorJeremy Allison <jra@samba.org>
Wed, 25 Jun 2008 22:09:42 +0000 (15:09 -0700)
committerJeremy Allison <jra@samba.org>
Wed, 25 Jun 2008 22:09:42 +0000 (15:09 -0700)
specific version. Stops the domain groups appearing twice.
Jeremy.

source/nsswitch/winbindd_passdb.c

index 8d3ff07570471e3f941e7d658fadc84265c6ab6c..56bce1a1130db3969b3adc716cda8c3ac716cf51 100644 (file)
@@ -73,19 +73,6 @@ static NTSTATUS enum_groups_internal(struct winbindd_domain *domain,
        return result;
 }
 
-/* list all domain groups */
-static NTSTATUS enum_dom_groups(struct winbindd_domain *domain,
-                               TALLOC_CTX *mem_ctx,
-                               uint32 *num_entries, 
-                               struct acct_info **info)
-{
-       return enum_groups_internal(domain,
-                               mem_ctx,
-                               num_entries,
-                               info,
-                               SID_NAME_DOM_GRP);
-}
-
 /* List all local groups (aliases) */
 static NTSTATUS enum_local_groups(struct winbindd_domain *domain,
                                TALLOC_CTX *mem_ctx,
@@ -336,6 +323,18 @@ static NTSTATUS password_policy(struct winbindd_domain *domain,
  BUILTIN specific functions.
 *********************************************************************/
 
+/* list all domain groups */
+static NTSTATUS builtin_enum_dom_groups(struct winbindd_domain *domain,
+                               TALLOC_CTX *mem_ctx,
+                               uint32 *num_entries, 
+                               struct acct_info **info)
+{
+       /* BUILTIN doesn't have domain groups */
+       *num_entries = 0;
+       *info = NULL;
+       return NT_STATUS_OK;
+}
+
 /* Query display info for a domain.  This returns enough information plus a
    bit extra to give an overview of domain users for the User Manager
    application. */
@@ -391,6 +390,19 @@ static NTSTATUS builtin_trusted_domains(struct winbindd_domain *domain,
  SAM specific functions.
 *********************************************************************/
 
+/* list all domain groups */
+static NTSTATUS sam_enum_dom_groups(struct winbindd_domain *domain,
+                               TALLOC_CTX *mem_ctx,
+                               uint32 *num_entries, 
+                               struct acct_info **info)
+{
+       return enum_groups_internal(domain,
+                               mem_ctx,
+                               num_entries,
+                               info,
+                               SID_NAME_DOM_GRP);
+}
+
 static NTSTATUS sam_query_user_list(struct winbindd_domain *domain,
                               TALLOC_CTX *mem_ctx,
                               uint32 *num_entries, 
@@ -656,7 +668,7 @@ static NTSTATUS sam_trusted_domains(struct winbindd_domain *domain,
 struct winbindd_methods builtin_passdb_methods = {
        false,
        builtin_query_user_list,
-       enum_dom_groups,
+       builtin_enum_dom_groups,
        enum_local_groups,
        name_to_sid,
        sid_to_name,
@@ -675,7 +687,7 @@ struct winbindd_methods builtin_passdb_methods = {
 struct winbindd_methods sam_passdb_methods = {
        false,
        sam_query_user_list,
-       enum_dom_groups,
+       sam_enum_dom_groups,
        enum_local_groups,
        name_to_sid,
        sid_to_name,