From 3bdfcbac5c1a6c571a4299467a7993da46a921a5 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Tue, 29 Jul 2008 12:08:47 +0200 Subject: winbindd: handle trusted domains without sid. Guenther (This used to be commit 0c1efc6c89b1a51a94d10971bf0fc515416709b3) --- source3/winbindd/winbindd_ads.c | 12 ++++++++++-- source3/winbindd/winbindd_cache.c | 9 +++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) (limited to 'source3') diff --git a/source3/winbindd/winbindd_ads.c b/source3/winbindd/winbindd_ads.c index 5e3d5d2aec..097fa3907d 100644 --- a/source3/winbindd/winbindd_ads.c +++ b/source3/winbindd/winbindd_ads.c @@ -1241,13 +1241,21 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain, (*names)[ret_count] = CONST_DISCARD(char *, trusts.array[i].netbios_name); (*alt_names)[ret_count] = CONST_DISCARD(char *, trusts.array[i].dns_name); - sid_copy(&(*dom_sids)[ret_count], trusts.array[i].sid); + if (trusts.array[i].sid) { + sid_copy(&(*dom_sids)[ret_count], trusts.array[i].sid); + } else { + sid_copy(&(*dom_sids)[ret_count], &global_sid_NULL); + } /* add to the trusted domain cache */ fstrcpy( d.name, trusts.array[i].netbios_name); fstrcpy( d.alt_name, trusts.array[i].dns_name); - sid_copy( &d.sid, trusts.array[i].sid); + if (trusts.array[i].sid) { + sid_copy( &d.sid, trusts.array[i].sid); + } else { + sid_copy(&(*dom_sids)[ret_count], &global_sid_NULL); + } if ( domain->primary ) { DEBUG(10,("trusted_domains(ads): Searching " diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c index 60403717c1..c9d857c2ec 100644 --- a/source3/winbindd/winbindd_cache.c +++ b/source3/winbindd/winbindd_cache.c @@ -2072,7 +2072,9 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain, for (i=0; i<(*num_domains); i++) { (*names)[i] = centry_string(centry, mem_ctx); (*alt_names)[i] = centry_string(centry, mem_ctx); - centry_sid(centry, mem_ctx, &(*dom_sids)[i]); + if (!centry_sid(centry, mem_ctx, &(*dom_sids)[i])) { + sid_copy(&(*dom_sids)[i], &global_sid_NULL); + } } status = centry->status; @@ -3543,8 +3545,11 @@ static bool add_wbdomain_to_tdc_array( struct winbindd_domain *new_dom, list[idx].domain_name = talloc_strdup( list, new_dom->name ); list[idx].dns_name = talloc_strdup( list, new_dom->alt_name ); - if ( !is_null_sid( &new_dom->sid ) ) + if ( !is_null_sid( &new_dom->sid ) ) { sid_copy( &list[idx].sid, &new_dom->sid ); + } else { + sid_copy(&list[idx].sid, &global_sid_NULL); + } if ( new_dom->domain_flags != 0x0 ) list[idx].trust_flags = new_dom->domain_flags; -- cgit