--- a/source3/winbindd/winbindd_util.c 2010-01-26 15:05:01.000000000 +0100 +++ b/source3/winbindd/winbindd_util.c 2010-02-17 13:12:18.725349968 +0100 @@ -481,7 +481,7 @@ if ( (flags & NETR_TRUST_FLAG_INBOUND) && (type == NETR_TRUST_TYPE_UPLEVEL) && - (attribs == NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE) ) + ((attribs & NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE) == NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE) ) { /* add the trusted domain if we don't know about it */ --- a/source3/winbindd/winbindd_misc.c 2010-01-26 15:05:01.000000000 +0100 +++ b/source3/winbindd/winbindd_misc.c 2010-02-17 16:06:04.723956293 +0100 @@ -45,7 +45,7 @@ { if (domain->trust_attribs == NETR_TRUST_ATTRIBUTE_QUARANTINED_DOMAIN) return EXTERNAL; - else if (domain->trust_attribs == NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE) + else if ((domain->trust_attribs & NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE) == NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE) return FOREST; else if (((domain->trust_flags & NETR_TRUST_FLAG_IN_FOREST) == NETR_TRUST_FLAG_IN_FOREST) && ((domain->trust_flags & NETR_TRUST_FLAG_PRIMARY) == 0x0)) @@ -78,9 +78,10 @@ static bool trust_is_transitive(struct winbindd_tdc_domain *domain) { - if ((domain->trust_attribs == NETR_TRUST_ATTRIBUTE_NON_TRANSITIVE) || + if (((domain->trust_attribs == NETR_TRUST_ATTRIBUTE_NON_TRANSITIVE) || (domain->trust_attribs == NETR_TRUST_ATTRIBUTE_QUARANTINED_DOMAIN) || - (domain->trust_attribs == NETR_TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL)) + (domain->trust_attribs == NETR_TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL)) && + !(domain->trust_attribs == NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE)) return False; return True; }