diff options
author | Petr Viktorin <pviktori@redhat.com> | 2012-09-14 12:05:12 -0400 |
---|---|---|
committer | Martin Kosek <mkosek@redhat.com> | 2012-09-24 13:55:17 +0200 |
commit | 0b254e8b1e60b46ce29fecedbc088921a526fbd8 (patch) | |
tree | 77b273886ecb8923f8e528f8d6a07b8b2b2d7bc0 | |
parent | 230261a1a542b7758db9f7211aad517ef5fecee0 (diff) | |
download | freeipa-0b254e8b1e60b46ce29fecedbc088921a526fbd8.tar.gz freeipa-0b254e8b1e60b46ce29fecedbc088921a526fbd8.tar.xz freeipa-0b254e8b1e60b46ce29fecedbc088921a526fbd8.zip |
Always handle NotFound error in dnsrecord-mod
When there were no updated attrs when modifying a nonexistent DNS record,
the error was not handled and caused an internal server error later (old_entry
was used uninitialized).
https://fedorahosted.org/freeipa/ticket/3055
-rw-r--r-- | ipalib/plugins/dns.py | 3 | ||||
-rw-r--r-- | tests/test_xmlrpc/test_dns_plugin.py | 10 |
2 files changed, 11 insertions, 2 deletions
diff --git a/ipalib/plugins/dns.py b/ipalib/plugins/dns.py index 5484119d4..8c269c0a0 100644 --- a/ipalib/plugins/dns.py +++ b/ipalib/plugins/dns.py @@ -2455,8 +2455,7 @@ class dnsrecord_mod(LDAPUpdate): (dn_, old_entry) = ldap.get_entry(dn, _record_attributes, normalize=self.obj.normalize_dn) except errors.NotFound: - if updated_attrs: - self.obj.handle_not_found(*keys) + self.obj.handle_not_found(*keys) if updated_attrs: for attr in updated_attrs: diff --git a/tests/test_xmlrpc/test_dns_plugin.py b/tests/test_xmlrpc/test_dns_plugin.py index 6a54bcb63..3c2dc005d 100644 --- a/tests/test_xmlrpc/test_dns_plugin.py +++ b/tests/test_xmlrpc/test_dns_plugin.py @@ -590,6 +590,16 @@ class test_dns(Declarative): dict( + desc='Try to modify nonexistent record in zone %r' % dnszone1, + command=('dnsrecord_mod', + [dnszone1, u'ghostname'], + {'aaaarecord': u'f001:baad::1'}), + expected=errors.NotFound( + reason=u'ghostname: DNS resource record not found'), + ), + + + dict( desc='Modify AAAA record in %r in zone %r' % (dnsres1, dnszone1), command=('dnsrecord_mod', [dnszone1, dnsres1], {'aaaarecord': u'ff02::1'}), expected={ |