possibly fix the 15000 user problem
authorAndrew Tridgell <tridge@samba.org>
Thu, 11 Apr 2002 14:30:31 +0000 (14:30 +0000)
committerAndrew Tridgell <tridge@samba.org>
Thu, 11 Apr 2002 14:30:31 +0000 (14:30 +0000)
I think its caused by a rpc operation failing and us giving invalid
data back to the cache layer. Using talloc_zero() should solve this.

source/nsswitch/winbindd_ads.c
source/nsswitch/winbindd_rpc.c

index 2206c5a36e2bbfd97dc678c13677a7cca713b5dd..22bad667c3c55abcb015ec21bef23aed06c6238b 100644 (file)
@@ -220,7 +220,7 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain,
                goto done;
        }
 
-       (*info) = talloc(mem_ctx, count * sizeof(**info));
+       (*info) = talloc_zero(mem_ctx, count * sizeof(**info));
        if (!*info) {
                status = NT_STATUS_NO_MEMORY;
                goto done;
@@ -308,7 +308,7 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain *domain,
                goto done;
        }
 
-       (*info) = talloc(mem_ctx, count * sizeof(**info));
+       (*info) = talloc_zero(mem_ctx, count * sizeof(**info));
        if (!*info) {
                status = NT_STATUS_NO_MEMORY;
                goto done;
@@ -628,7 +628,7 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain,
        }
 
        count = ads_pull_sids(ads, mem_ctx, msg, "tokenGroups", &sids) + 1;
-       (*user_gids) = (uint32 *)talloc(mem_ctx, sizeof(uint32) * count);
+       (*user_gids) = (uint32 *)talloc_zero(mem_ctx, sizeof(uint32) * count);
        (*user_gids)[(*num_groups)++] = primary_group;
 
        for (i=1;i<count;i++) {
@@ -690,9 +690,9 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
                goto done;
        }
 
-       (*rid_mem) = talloc(mem_ctx, sizeof(uint32) * count);
-       (*name_types) = talloc(mem_ctx, sizeof(uint32) * count);
-       (*names) = talloc(mem_ctx, sizeof(char *) * count);
+       (*rid_mem) = talloc_zero(mem_ctx, sizeof(uint32) * count);
+       (*name_types) = talloc_zero(mem_ctx, sizeof(uint32) * count);
+       (*names) = talloc_zero(mem_ctx, sizeof(char *) * count);
 
        for (msg = ads_first_entry(ads, res); msg; msg = ads_next_entry(ads, msg)) {
                uint32 atype, rid;
index 53c39b2f5709438131beb18a11c06238f315f278..5af42ee041bb1b5b3d8e3b37aaa5ac306f25417f 100644 (file)
@@ -447,8 +447,8 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
 
 #define MAX_LOOKUP_RIDS 900
 
-        *names = talloc(mem_ctx, *num_names * sizeof(char *));
-        *name_types = talloc(mem_ctx, *num_names * sizeof(uint32));
+        *names = talloc_zero(mem_ctx, *num_names * sizeof(char *));
+        *name_types = talloc_zero(mem_ctx, *num_names * sizeof(uint32));
 
         for (i = 0; i < *num_names; i += MAX_LOOKUP_RIDS) {
                 int num_lookup_rids = MIN(*num_names - i, MAX_LOOKUP_RIDS);