diff options
Diffstat (limited to 'ipa-python/entity.py')
-rw-r--r-- | ipa-python/entity.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/ipa-python/entity.py b/ipa-python/entity.py index a5aa33ca3..64db350ba 100644 --- a/ipa-python/entity.py +++ b/ipa-python/entity.py @@ -19,6 +19,7 @@ import ldap import ldif import re import cStringIO +import copy import ipa.ipautil @@ -33,6 +34,13 @@ def utf8_encode_values(values): else: return utf8_encode_value(values) +def copy_CIDict(x): + """Do a deep copy of a CIDict""" + y = {} + for key, value in x.iteritems(): + y[copy.deepcopy(key)] = copy.deepcopy(value) + return y + class Entity: """This class represents an IPA user. An LDAP entry consists of a DN and a list of attributes. Each attribute consists of a name and a list of @@ -63,7 +71,7 @@ class Entity: self.dn = '' self.data = ipa.ipautil.CIDict() - self.orig_data = ipa.ipautil.CIDict(self.data) + self.orig_data = ipa.ipautil.CIDict(copy_CIDict(self.data)) def __nonzero__(self): """This allows us to do tests like if entry: returns false if there is no data, |