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
This commit is contained in:
Petr Viktorin
2012-09-14 12:05:12 -04:00
committed by Martin Kosek
parent 230261a1a5
commit 0b254e8b1e
2 changed files with 11 additions and 2 deletions

View File

@@ -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:

View File

@@ -589,6 +589,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'}),