diff options
author | Martin Basti <mbasti@redhat.com> | 2014-11-19 14:51:20 +0100 |
---|---|---|
committer | Jan Cholasta <jcholast@redhat.com> | 2014-11-20 14:41:36 +0000 |
commit | c80a59eff479dbdc26eaaa18f18256f1f7471880 (patch) | |
tree | 501fe29e77f60bc1a4493f57a9b2e5c548fa609f /ipapython/dnsutil.py | |
parent | bff97e8b2e8d80e75e989b661e873c8e72cd7429 (diff) | |
download | freeipa-c80a59eff479dbdc26eaaa18f18256f1f7471880.tar.gz freeipa-c80a59eff479dbdc26eaaa18f18256f1f7471880.tar.xz freeipa-c80a59eff479dbdc26eaaa18f18256f1f7471880.zip |
Raise right exception if domain name is not valid
Because of dnspython implementation, in some cases UnicodeError is
raised instead of DNS SyntaxError
Ticket: https://fedorahosted.org/freeipa/ticket/4734
Reviewed-By: Jan Cholasta <jcholast@redhat.com>
Diffstat (limited to 'ipapython/dnsutil.py')
-rw-r--r-- | ipapython/dnsutil.py | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/ipapython/dnsutil.py b/ipapython/dnsutil.py index d7841fe25..f08cddad9 100644 --- a/ipapython/dnsutil.py +++ b/ipapython/dnsutil.py @@ -26,15 +26,16 @@ class DNSName(dns.name.Name): labels = None # make pylint happy def __init__(self, labels, origin=None): - if isinstance(labels, str): - #pylint: disable=E1101 - labels = dns.name.from_text(labels, origin).labels - elif isinstance(labels, unicode): - #pylint: disable=E1101 - labels = dns.name.from_unicode(labels, origin).labels - elif isinstance(labels, dns.name.Name): - labels = labels.labels try: + if isinstance(labels, str): + #pylint: disable=E1101 + labels = dns.name.from_text(labels, origin).labels + elif isinstance(labels, unicode): + #pylint: disable=E1101 + labels = dns.name.from_unicode(labels, origin).labels + elif isinstance(labels, dns.name.Name): + labels = labels.labels + super(DNSName, self).__init__(labels) except UnicodeError, e: # dnspython bug, an invalid domain name returns the UnicodeError |