summaryrefslogtreecommitdiffstats
path: root/ipa-python/entity.py
diff options
context:
space:
mode:
Diffstat (limited to 'ipa-python/entity.py')
-rw-r--r--ipa-python/entity.py10
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,