Fix addattr internal error

When ADD command is being executed and a single-value object attribute
is being set with both option and addattr IPA ends up in an internal
error.

Make better value sanitizing job in this case and let IPA throw
a user-friendly error. Unit test exercising this situation is added.

https://fedorahosted.org/freeipa/ticket/2429
This commit is contained in:
Martin Kosek
2012-09-13 15:51:51 +02:00
committed by Rob Crittenden
parent d491ba0289
commit cd7a85c12c
2 changed files with 21 additions and 1 deletions

View File

@@ -882,7 +882,17 @@ last, after all sets and adds."""),
entry_attrs[attr] = val
for attr in direct_add:
entry_attrs.setdefault(attr, []).extend(adddict[attr])
try:
val = entry_attrs[attr]
except KeyError:
val = []
else:
if not isinstance(val, (list, tuple)):
val = [val]
elif isinstance(val, tuple):
val = list(val)
val.extend(adddict[attr])
entry_attrs[attr] = val
for attr in direct_del:
for delval in deldict[attr]: