summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Danneman <steven.danneman@isilon.com>2009-07-29 16:13:44 -0700
committerSteven Danneman <steven.danneman@isilon.com>2009-08-26 16:34:09 -0700
commit5469866242f0dfbdc7260c86cfca196b10e4af21 (patch)
tree664c544d72ae38b273eeb340f7e9d00e3cad6f42
parent32f9d20dff043cca5b81ff855c44a71bf18e41e4 (diff)
downloadsamba-5469866242f0dfbdc7260c86cfca196b10e4af21.tar.gz
samba-5469866242f0dfbdc7260c86cfca196b10e4af21.tar.bz2
samba-5469866242f0dfbdc7260c86cfca196b10e4af21.zip
s3/winbindd: Remove unnecessary check for NULL SID
There's a known bug in some Windows implementations of DsEnumerateDomainTrusts() where domain SIDs are not returned for transitively trusted domains within the same forest. Jerry originally worked around this in the winbindd parent by checking for S-0-0 and converting it to S-1-0 in 8b0fce0b. Guenter later moved these checks into the child process in commit 3bdfcbac making the initial patch unecessary. I've removed it and added a clarifying comment to the child process. If ever this SID is needed we could add an extra DsEnumerateDomainTrusts() call in trusted_domains() as suggested by the Microsoft KB.
-rw-r--r--source3/winbindd/winbindd_ads.c6
-rw-r--r--source3/winbindd/winbindd_util.c9
2 files changed, 7 insertions, 8 deletions
diff --git a/source3/winbindd/winbindd_ads.c b/source3/winbindd/winbindd_ads.c
index a9df61d5f4..b5fe08093c 100644
--- a/source3/winbindd/winbindd_ads.c
+++ b/source3/winbindd/winbindd_ads.c
@@ -1379,9 +1379,13 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain,
DEBUG(10,("trusted_domains: Skipping external trusted domain "
"%s because it is outside of our primary domain\n",
trusts.array[i].netbios_name));
- continue;
+ continue;
}
+ /* We must check that the SID of each trusted domain
+ * was returned to work around a bug in Windows:
+ * http://support.microsoft.com/kb/922832 */
+
(*names)[ret_count] = CONST_DISCARD(char *, trusts.array[i].netbios_name);
(*alt_names)[ret_count] = CONST_DISCARD(char *, trusts.array[i].dns_name);
if (trusts.array[i].sid) {
diff --git a/source3/winbindd/winbindd_util.c b/source3/winbindd/winbindd_util.c
index 5c2ebab836..ff8c101b37 100644
--- a/source3/winbindd/winbindd_util.c
+++ b/source3/winbindd/winbindd_util.c
@@ -322,13 +322,8 @@ static void trustdom_recv(void *private_data, bool success)
*q = '\0';
if (!string_to_sid(&sid, sidstr)) {
- /* Allow NULL sid for sibling domains */
- if ( strcmp(sidstr,"S-0-0") == 0) {
- sid_copy( &sid, &global_sid_NULL);
- } else {
- DEBUG(0, ("Got invalid trustdom response\n"));
- break;
- }
+ DEBUG(0, ("Got invalid trustdom response\n"));
+ break;
}
/* use the real alt_name if we have one, else pass in NULL */