Author: jra Date: 2006-06-29 18:01:25 +0000 (Thu, 29 Jun 2006) New Revision: 16687
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16687 Log: Fix bugs #3901, #3902, #3903 reported by [EMAIL PROTECTED] Jeremy Modified: branches/SAMBA_3_0/source/lib/smbldap.c branches/SAMBA_3_0/source/nsswitch/winbindd_misc.c branches/SAMBA_3_0/source/nsswitch/winbindd_user.c Changeset: Modified: branches/SAMBA_3_0/source/lib/smbldap.c =================================================================== --- branches/SAMBA_3_0/source/lib/smbldap.c 2006-06-29 18:01:20 UTC (rev 16686) +++ branches/SAMBA_3_0/source/lib/smbldap.c 2006-06-29 18:01:25 UTC (rev 16687) @@ -325,7 +325,7 @@ return NULL; } - if (pull_utf8_talloc(mem_ctx, &result, values[0]) < 0) { + if (pull_utf8_talloc(mem_ctx, &result, values[0]) == (size_t)-1) { DEBUG(10, ("pull_utf8_talloc failed\n")); ldap_value_free(values); return NULL; Modified: branches/SAMBA_3_0/source/nsswitch/winbindd_misc.c =================================================================== --- branches/SAMBA_3_0/source/nsswitch/winbindd_misc.c 2006-06-29 18:01:20 UTC (rev 16686) +++ branches/SAMBA_3_0/source/nsswitch/winbindd_misc.c 2006-06-29 18:01:25 UTC (rev 16687) @@ -124,6 +124,12 @@ &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) Modified: branches/SAMBA_3_0/source/nsswitch/winbindd_user.c =================================================================== --- branches/SAMBA_3_0/source/nsswitch/winbindd_user.c 2006-06-29 18:01:20 UTC (rev 16686) +++ branches/SAMBA_3_0/source/nsswitch/winbindd_user.c 2006-06-29 18:01:25 UTC (rev 16687) @@ -524,7 +524,6 @@ 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 @@ 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 @@ 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 @@ status = methods->query_user_list(domain, state->mem_ctx, &num_entries, &info); + if (!NT_STATUS_IS_OK(status)) { + continue; + } + if (num_entries == 0) continue;