summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2002-04-11 14:30:31 +0000
committerAndrew Tridgell <tridge@samba.org>2002-04-11 14:30:31 +0000
commit560a51f46bab19b23aab72ca7e17017443346058 (patch)
treeea1a31fc92c92c9294e7a705a93cbdfbb2c4ce0d
parent5c0e682c4a2e8bb91911064c51bf4c690555cb33 (diff)
downloadsamba-560a51f46bab19b23aab72ca7e17017443346058.tar.gz
samba-560a51f46bab19b23aab72ca7e17017443346058.tar.bz2
samba-560a51f46bab19b23aab72ca7e17017443346058.zip
possibly fix the 15000 user problem
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. (This used to be commit dfa990170bb9a665ba48443258e2a87f50baa75c)
-rw-r--r--source3/nsswitch/winbindd_ads.c12
-rw-r--r--source3/nsswitch/winbindd_rpc.c4
2 files changed, 8 insertions, 8 deletions
diff --git a/source3/nsswitch/winbindd_ads.c b/source3/nsswitch/winbindd_ads.c
index 2206c5a36e..22bad667c3 100644
--- a/source3/nsswitch/winbindd_ads.c
+++ b/source3/nsswitch/winbindd_ads.c
@@ -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;
diff --git a/source3/nsswitch/winbindd_rpc.c b/source3/nsswitch/winbindd_rpc.c
index 53c39b2f57..5af42ee041 100644
--- a/source3/nsswitch/winbindd_rpc.c
+++ b/source3/nsswitch/winbindd_rpc.c
@@ -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);