summaryrefslogtreecommitdiff
path: root/source3/nsswitch
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2006-06-29 18:01:25 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:19:08 -0500
commit8bd19b15e3db1d7c4d96298182114ef15bde2f78 (patch)
treec7fb0596fae82c8d663dbb2079ca560023638456 /source3/nsswitch
parent8f0ea257b61f435060cfe6995e238c6d4b07de21 (diff)
downloadsamba-8bd19b15e3db1d7c4d96298182114ef15bde2f78.tar.gz
samba-8bd19b15e3db1d7c4d96298182114ef15bde2f78.tar.bz2
samba-8bd19b15e3db1d7c4d96298182114ef15bde2f78.zip
r16687: Fix bugs #3901, #3902, #3903 reported by jason@ncac.gwu.edu.
Jeremy (This used to be commit c4896b17faa6802f18cc1cec7fcc6168bde2eef0)
Diffstat (limited to 'source3/nsswitch')
-rw-r--r--source3/nsswitch/winbindd_misc.c6
-rw-r--r--source3/nsswitch/winbindd_user.c19
2 files changed, 18 insertions, 7 deletions
diff --git a/source3/nsswitch/winbindd_misc.c b/source3/nsswitch/winbindd_misc.c
index 6c6dc5b765..d43617f778 100644
--- a/source3/nsswitch/winbindd_misc.c
+++ b/source3/nsswitch/winbindd_misc.c
@@ -124,6 +124,12 @@ enum winbindd_result winbindd_dual_list_trusted_domains(struct winbindd_domain *
&num_domains, &names,
&alt_names, &sids);
+ if (!NT_STATUS_IS_OK(result)) {
+ DEBUG(3, ("winbindd_dual_list_trusted_domains: trusted_domains returned %s\n",
+ nt_errstr(result) ));
+ num_domains = 0;
+ }
+
extra_data = talloc_strdup(state->mem_ctx, "");
if (num_domains > 0)
diff --git a/source3/nsswitch/winbindd_user.c b/source3/nsswitch/winbindd_user.c
index 07bd2a30bf..a73b5c394c 100644
--- a/source3/nsswitch/winbindd_user.c
+++ b/source3/nsswitch/winbindd_user.c
@@ -524,7 +524,6 @@ static BOOL get_sam_user_entries(struct getent_state *ent, TALLOC_CTX *mem_ctx)
uint32 num_entries;
WINBIND_USERINFO *info;
struct getpwent_user *name_list = NULL;
- BOOL result = False;
struct winbindd_domain *domain;
struct winbindd_methods *methods;
unsigned int i;
@@ -552,12 +551,18 @@ static BOOL get_sam_user_entries(struct getent_state *ent, TALLOC_CTX *mem_ctx)
status = methods->query_user_list(domain, mem_ctx, &num_entries,
&info);
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(10,("get_sam_user_entries: query_user_list failed with %s\n",
+ nt_errstr(status) ));
+ return False;
+ }
+
if (num_entries) {
name_list = SMB_REALLOC_ARRAY(name_list, struct getpwent_user, ent->num_sam_entries + num_entries);
if (!name_list) {
DEBUG(0,("get_sam_user_entries realloc failed.\n"));
- goto done;
+ return False;
}
}
@@ -602,11 +607,7 @@ static BOOL get_sam_user_entries(struct getent_state *ent, TALLOC_CTX *mem_ctx)
ent->sam_entries = name_list;
ent->sam_entry_index = 0;
- result = ent->num_sam_entries > 0;
-
- done:
-
- return result;
+ return ent->num_sam_entries > 0;
}
/* Fetch next passwd entry from ntdom database */
@@ -757,6 +758,10 @@ void winbindd_list_users(struct winbindd_cli_state *state)
status = methods->query_user_list(domain, state->mem_ctx,
&num_entries, &info);
+ if (!NT_STATUS_IS_OK(status)) {
+ continue;
+ }
+
if (num_entries == 0)
continue;