diff options
author | Andrew Tridgell <tridge@samba.org> | 2001-12-20 23:35:14 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2001-12-20 23:35:14 +0000 |
commit | ff002a458afa6ca378f0c6d2ec9fb74233c839a7 (patch) | |
tree | 60877d5fa197766f04ef2248430e6d66652acb87 | |
parent | 0bea6cf79a44f79fa3a4f2c8381e898e79c66509 (diff) | |
download | samba-ff002a458afa6ca378f0c6d2ec9fb74233c839a7.tar.gz |
added ads_domain_sid() function
-rw-r--r-- | source/libads/ldap.c | 18 | ||||
-rw-r--r-- | source/nsswitch/winbindd_ads.c | 20 |
2 files changed, 23 insertions, 15 deletions
diff --git a/source/libads/ldap.c b/source/libads/ldap.c index d2b9f74c4d6..8966ceb32a9 100644 --- a/source/libads/ldap.c +++ b/source/libads/ldap.c @@ -680,4 +680,22 @@ ADS_STATUS ads_trusted_domains(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, return ADS_SUCCESS; } +/* find the domain sid for our domain */ +ADS_STATUS ads_domain_sid(ADS_STRUCT *ads, DOM_SID *sid) +{ + const char *attrs[] = {"objectSid", NULL}; + void *res; + ADS_STATUS rc; + + rc = ads_do_search(ads, ads->bind_path, LDAP_SCOPE_BASE, "(objectclass=*)", + attrs, &res); + if (!ADS_ERR_OK(rc)) return rc; + if (!ads_pull_sid(ads, res, "objectSid", sid)) { + return ADS_ERROR_SYSTEM(ENOENT); + } + ads_msgfree(ads, res); + + return ADS_SUCCESS; +} + #endif diff --git a/source/nsswitch/winbindd_ads.c b/source/nsswitch/winbindd_ads.c index 8d0c78b2d5c..a0d35030bf6 100644 --- a/source/nsswitch/winbindd_ads.c +++ b/source/nsswitch/winbindd_ads.c @@ -706,7 +706,7 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain, char ***names, DOM_SID **dom_sids) { - ADS_STRUCT *ads = NULL; + ADS_STRUCT *ads; ADS_STATUS rc; *num_domains = 0; @@ -723,25 +723,15 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain, /* find the domain sid for a domain */ static NTSTATUS domain_sid(struct winbindd_domain *domain, DOM_SID *sid) { - NTSTATUS status = NT_STATUS_UNSUCCESSFUL; - const char *attrs[] = {"objectSid", NULL}; - ADS_STRUCT *ads = NULL; - void *res; + ADS_STRUCT *ads; ADS_STATUS rc; ads = ads_cached_connection(domain); - if (!ads) goto done; + if (!ads) return NT_STATUS_UNSUCCESSFUL; - rc = ads_do_search(ads, ads->bind_path, LDAP_SCOPE_BASE, "(objectclass=*)", - attrs, &res); - if (!ADS_ERR_OK(rc)) goto done; - if (ads_pull_sid(ads, res, "objectSid", sid)) { - status = NT_STATUS_OK; - } - ads_msgfree(ads, res); + rc = ads_domain_sid(ads, sid); -done: - return status; + return ads_ntstatus(rc); } /* the ADS backend methods are exposed via this structure */ |