diff options
author | Martin Babinsky <mbabinsk@redhat.com> | 2017-03-15 08:18:39 +0100 |
---|---|---|
committer | Martin Basti <mbasti@redhat.com> | 2017-03-15 09:48:12 +0100 |
commit | 1cdd5dee006426c996f67240b6cb2c1aa05e5168 (patch) | |
tree | 53fba65bb54f0897346f0067241e33583a8c95a6 /ipaserver/plugins/idviews.py | |
parent | 7ef4e9eb810063243fcc575434d856c854b14eee (diff) | |
download | freeipa-1cdd5dee006426c996f67240b6cb2c1aa05e5168.tar.gz freeipa-1cdd5dee006426c996f67240b6cb2c1aa05e5168.tar.xz freeipa-1cdd5dee006426c996f67240b6cb2c1aa05e5168.zip |
idviews: correctly handle modification of non-existent view
the pre-callback in `idview-mod` did not correctly handle non-existent
object during objectclass check. It will now correctly report that the
object was not found instead on generic 'no such entry'.
https://pagure.io/freeipa/issue/6372
Reviewed-By: Martin Basti <mbasti@redhat.com>
Diffstat (limited to 'ipaserver/plugins/idviews.py')
-rw-r--r-- | ipaserver/plugins/idviews.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/ipaserver/plugins/idviews.py b/ipaserver/plugins/idviews.py index 732043283..6d4ac7520 100644 --- a/ipaserver/plugins/idviews.py +++ b/ipaserver/plugins/idviews.py @@ -145,8 +145,11 @@ class idview(LDAPObject): }, } - def ensure_possible_objectclasses(self, ldap, dn, entry_attrs): - orig_entry_attrs = ldap.get_entry(dn, ['objectclass']) + def ensure_possible_objectclasses(self, ldap, dn, entry_attrs, *keys): + try: + orig_entry_attrs = ldap.get_entry(dn, ['objectclass']) + except errors.NotFound: + self.handle_not_found(*keys) orig_objectclasses = { o.lower() for o in orig_entry_attrs.get('objectclass', [])} @@ -193,7 +196,7 @@ class idview_mod(LDAPUpdate): raise protected_default_trust_view_error self.api.Object.config.validate_domain_resolution_order(entry_attrs) - self.obj.ensure_possible_objectclasses(ldap, dn, entry_attrs) + self.obj.ensure_possible_objectclasses(ldap, dn, entry_attrs, *keys) return dn |