From: Douglas Bagnall Date: Wed, 29 Aug 2018 04:39:51 +0000 (+1200) Subject: gpo: avoid quadratic behaviour in guid retrieval X-Git-Tag: tdb-1.3.17~1410 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9d7a0bb3de2478b7bb7cc1e2bf56e116c4f52588;p=thirdparty%2Fsamba.git gpo: avoid quadratic behaviour in guid retrieval Signed-off-by: Douglas Bagnall Reviewed-by: David Mulder Reviewed-by: Aurelien Aptel --- diff --git a/python/samba/gpclass.py b/python/samba/gpclass.py index 85fdb88eafa..748411f7aba 100644 --- a/python/samba/gpclass.py +++ b/python/samba/gpclass.py @@ -244,12 +244,12 @@ class gp_log: user_obj = self.gpdb.find('user[@name="%s"]' % self.user) if user_obj is not None: apply_log = user_obj.find('applylog') - if apply_log is None: - return guids - for i in reversed(range(0, len(apply_log))): - guid_obj = apply_log.find('guid[@count="%d"]' % i) - guid = guid_obj.attrib['value'] - guids.append(guid) + if apply_log is not None: + guid_objs = apply_log.findall('guid[@count]') + guids_by_count = [(g.get('count'), g.get('value')) + for g in guid_objs] + guids_by_count.sort(reverse=True) + guids.extend(guid for count, guid in guids_by_count) return guids def get_applied_settings(self, guids):