diff options
author | Andrew Tridgell <tridge@samba.org> | 2001-12-10 22:10:16 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2001-12-10 22:10:16 +0000 |
commit | 24aa09ff3dd128c6f12b4cb072943ff668a29a67 (patch) | |
tree | 5e14ec632de7857dc3c1c0707a375cef568735ac /source/nsswitch | |
parent | 919b11a787145139e6255674179b2ff7e587475d (diff) | |
download | samba-24aa09ff3dd128c6f12b4cb072943ff668a29a67.tar.gz samba-24aa09ff3dd128c6f12b4cb072943ff668a29a67.tar.xz samba-24aa09ff3dd128c6f12b4cb072943ff668a29a67.zip |
robustness fixes and moved ccache location into winbindd_ads code
Diffstat (limited to 'source/nsswitch')
-rw-r--r-- | source/nsswitch/winbindd_ads.c | 12 | ||||
-rw-r--r-- | source/nsswitch/winbindd_rpc.c | 8 |
2 files changed, 20 insertions, 0 deletions
diff --git a/source/nsswitch/winbindd_ads.c b/source/nsswitch/winbindd_ads.c index 7f9d2eb4e52..84e8ab3fc32 100644 --- a/source/nsswitch/winbindd_ads.c +++ b/source/nsswitch/winbindd_ads.c @@ -93,11 +93,17 @@ static ADS_STRUCT *ads_cached_connection(struct winbindd_domain *domain) { ADS_STRUCT *ads; int rc; + char *ccache; if (domain->private) { return (ADS_STRUCT *)domain->private; } + /* we don't want this to affect the users ccache */ + ccache = lock_path("winbindd_ccache"); + setenv("KRB5CCNAME", ccache, 1); + unlink(ccache); + ads = ads_init(NULL, NULL, NULL, NULL); if (!ads) { DEBUG(1,("ads_init for domain %s failed\n", domain->name)); @@ -154,6 +160,8 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain, void *msg = NULL; NTSTATUS status = NT_STATUS_UNSUCCESSFUL; + *num_entries = 0; + DEBUG(3,("ads: query_user_list\n")); if ((*start_ndx) != 0) { @@ -245,6 +253,8 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain *domain, void *msg = NULL; NTSTATUS status = NT_STATUS_UNSUCCESSFUL; + *num_entries = 0; + DEBUG(3,("ads: enum_dom_groups\n")); if ((*start_ndx) != 0) { @@ -514,6 +524,8 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain, char *sidstr; NTSTATUS status = NT_STATUS_UNSUCCESSFUL; + *num_groups = 0; + DEBUG(3,("ads: lookup_usergroups\n")); (*num_groups) = 0; diff --git a/source/nsswitch/winbindd_rpc.c b/source/nsswitch/winbindd_rpc.c index cc1d3b54570..5417e8c4d04 100644 --- a/source/nsswitch/winbindd_rpc.c +++ b/source/nsswitch/winbindd_rpc.c @@ -40,6 +40,8 @@ static NTSTATUS query_user_list(struct winbindd_domain *domain, SAM_DISPINFO_1 info1; int i; + *num_entries = 0; + /* Get sam handle */ if (!(hnd = cm_get_sam_handle(domain->name))) @@ -255,6 +257,8 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain *domain, DOM_GID *user_groups; int i; + *num_groups = 0; + /* Get sam handle */ if (!(hnd = cm_get_sam_handle(domain->name))) goto done; @@ -315,6 +319,8 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain, uint32 des_access = SEC_RIGHTS_MAXIMUM_ALLOWED; BOOL got_dom_pol = False, got_group_pol = False; + *num_names = 0; + /* Get sam handle */ if (!(hnd = cm_get_sam_handle(domain->name))) @@ -471,6 +477,8 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain, NTSTATUS result = NT_STATUS_UNSUCCESSFUL; uint32 enum_ctx = 0; + *num_domains = 0; + if (!(hnd = cm_get_lsa_handle(lp_workgroup()))) goto done; |