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:23:32 +0000 (15:23 -0700)
committerJeremy Allison <jra@samba.org>
Wed, 25 Jun 2008 22:23:32 +0000 (15:23 -0700)
specific version. Stops the domain groups appearing twice.
Jeremy.

source/winbindd/winbindd_passdb.c

index ffcf0719be76b1582a1980573ab500d4a86e12ac..e4cf0292252cbb0fab786561f29a793f5f77d055 100644 (file)
@@ -72,19 +72,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,
@@ -371,6 +358,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. */
@@ -426,6 +425,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,
@@ -688,7 +700,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,
@@ -707,7 +719,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,