trusts: use ipaNTTrustPartner attribute to detect trust entries

Trust entries were found by presence of ipaNTSecurityIdentifier
attribute. Unfortunately this attribute might not be there due the bug.
As replacement for this, attribute ipaNTTrustPartner can be used.

Note: other non trust entries located in cn=trusts subtree can be
cross-realm principals.

https://fedorahosted.org/freeipa/ticket/5665

Reviewed-By: Tomas Babej <tbabej@redhat.com>
Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
This commit is contained in:
Martin Basti 2016-02-22 17:36:01 +01:00
parent 9818e463f5
commit 70bd7c8802
2 changed files with 6 additions and 3 deletions

View File

@ -563,8 +563,11 @@ class trust(LDAPObject):
rules=ldap.MATCH_ALL
)
# more type of objects can be located in subtree (for example
# cross-realm principals). we need this attr do detect trust
# entries
trustfilter = ldap.combine_filters(
(trustfilter, "ipaNTSecurityIdentifier=*"),
(trustfilter, "ipaNTTrustPartner=*"),
rules=ldap.MATCH_ALL
)
@ -1036,7 +1039,7 @@ class trust_find(LDAPSearch):
# search needs to be done on a sub-tree scope
def pre_callback(self, ldap, filters, attrs_list, base_dn, scope, *args, **options):
# list only trust, not trust domains
trust_filter = '(ipaNTSecurityIdentifier=*)'
trust_filter = '(ipaNTTrustPartner=*)'
filter = ldap.combine_filters((filters, trust_filter), rules=ldap.MATCH_ALL)
return (filter, base_dn, ldap.SCOPE_SUBTREE)

View File

@ -294,7 +294,7 @@ class update_sids(Updater):
attrs_list=["cn"],
# more types of trusts can be stored under cn=trusts, we need
# the type with ipaNTTrustPartner attribute
filter="(!(%s=*))" % attr_name
filter="(&(ipaNTTrustPartner=*)(!(%s=*)))" % attr_name
)
except errors.NotFound:
pass