From b813e9ed8807b14d647035a8f8df0002cebe79dd Mon Sep 17 00:00:00 2001 From: Antonio Torres Date: Wed, 15 Mar 2023 11:24:06 +0100 Subject: [PATCH] ipaserver: deepcopy objectclasses list from IPA config We need to deepcopy the list of default objectlasses from IPA config before assigning it to an entry, in order to avoid further modifications of the entry affect the cached IPA config. Fixes: https://pagure.io/freeipa/issue/9349 Signed-off-by: Antonio Torres Reviewed-By: Francisco Trivino Reviewed-By: Thomas Woerner --- ipaserver/plugins/baseldap.py | 8 ++++---- ipaserver/plugins/stageuser.py | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ipaserver/plugins/baseldap.py b/ipaserver/plugins/baseldap.py index 25449b5aec72cbdbfb57527aa834cc69291398d6..8c041eb26e2c5c905f605f16288f49c4b7a2a274 100644 --- a/ipaserver/plugins/baseldap.py +++ b/ipaserver/plugins/baseldap.py @@ -796,9 +796,9 @@ class LDAPObject(Object): objectclasses = self.object_class if self.object_class_config: config = ldap.get_ipa_config() - objectclasses = config.get( + objectclasses = deepcopy(config.get( self.object_class_config, objectclasses - ) + )) objectclasses = objectclasses + self.possible_objectclasses # Get list of available attributes for this object for use # in the ACI UI. @@ -1157,9 +1157,9 @@ class LDAPCreate(BaseLDAPCommand, crud.Create): if self.obj.object_class_config: config = ldap.get_ipa_config() - entry_attrs['objectclass'] = config.get( + entry_attrs['objectclass'] = deepcopy(config.get( self.obj.object_class_config, entry_attrs['objectclass'] - ) + )) if self.obj.uuid_attribute: entry_attrs[self.obj.uuid_attribute] = 'autogenerate' diff --git a/ipaserver/plugins/stageuser.py b/ipaserver/plugins/stageuser.py index 9591a7dda746db64b9c765140d1ef1fb1ecb2ce7..b3e65b76544ca572b822fb3c85e777bb41d21a2d 100644 --- a/ipaserver/plugins/stageuser.py +++ b/ipaserver/plugins/stageuser.py @@ -557,9 +557,9 @@ class stageuser_activate(LDAPQuery): if self.obj.object_class_config: config = ldap.get_ipa_config() - entry_attrs['objectclass'] = config.get( + entry_attrs['objectclass'] = deepcopy(config.get( self.obj.object_class_config, entry_attrs['objectclass'] - ) + )) return(entry_attrs) -- 2.39.2