mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
ipaserver/dcerpc.py: Make sure trust is established only to forest root domain
Part of https://fedorahosted.org/freeipa/ticket/4463 Reviewed-By: Sumit Bose <sbose@redhat.com>
This commit is contained in:
parent
d16b471cea
commit
90227f817e
@ -817,6 +817,22 @@ class DeprecationError(InvocationError):
|
||||
errno = 3015
|
||||
format = _("Command '%(name)s' has been deprecated")
|
||||
|
||||
class NotAForestRootError(InvocationError):
|
||||
"""
|
||||
**3016** Raised when an attempt to establish trust is done against non-root domain
|
||||
Forest root domain has the same name as the forest itself
|
||||
|
||||
For example:
|
||||
|
||||
>>> raise NotAForestRootError(forest='example.test', domain='jointops.test')
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
NotAForestRootError: Domain 'jointops.test' is not a root domain for forest 'example.test'
|
||||
"""
|
||||
|
||||
errno = 3016
|
||||
format = _("Domain '%(domain)s' is not a root domain for forest '%(forest)s'")
|
||||
|
||||
|
||||
##############################################################################
|
||||
# 4000 - 4999: Execution errors
|
||||
|
@ -1151,6 +1151,9 @@ class TrustDomainJoins(object):
|
||||
realm_passwd
|
||||
)
|
||||
|
||||
if self.remote_domain.info['dns_domain'] != self.remote_domain.info['dns_forest']:
|
||||
raise errors.NotAForestRootError(forest=self.remote_domain.info['dns_forest'], domain=self.remote_domain.info['dns_domain'])
|
||||
|
||||
if not self.remote_domain.read_only:
|
||||
trustdom_pass = samba.generate_random_password(128, 128)
|
||||
self.get_realmdomains()
|
||||
@ -1167,5 +1170,8 @@ class TrustDomainJoins(object):
|
||||
if not(isinstance(self.remote_domain, TrustDomainInstance)):
|
||||
self.populate_remote_domain(realm, realm_server, realm_passwd=None)
|
||||
|
||||
if self.remote_domain.info['dns_domain'] != self.remote_domain.info['dns_forest']:
|
||||
raise errors.NotAForestRootError(forest=self.remote_domain.info['dns_forest'], domain=self.remote_domain.info['dns_domain'])
|
||||
|
||||
self.local_domain.establish_trust(self.remote_domain, trustdom_passwd)
|
||||
return dict(local=self.local_domain, remote=self.remote_domain, verified=False)
|
||||
|
Loading…
Reference in New Issue
Block a user