Hello,

this patch fixes "dictionary changed size during iteration" in 
cleanprof.py delete_net_duplicates().

Full backtrace:

# python3 aa-mergeprof   /etc/apparmor.d/bin.ping /etc/apparmor.d/bin.ping
Traceback (most recent call last):
  File "aa-mergeprof", line 695, in <module>
    main()
  File "aa-mergeprof", line 53, in main
    mergeprofiles.clear_common()
  File "aa-mergeprof", line 126, in clear_common
    deleted += user_base.compare_profiles()
  File "/home/cb/apparmor/HEAD-CLEAN/utils/apparmor/cleanprofile.py", line 43, 
in compare_profiles
    deleted += self.remove_duplicate_rules(profile)
  File "/home/cb/apparmor/HEAD-CLEAN/utils/apparmor/cleanprofile.py", line 77, 
in remove_duplicate_rules
    deleted += 
delete_net_duplicates(self.profile.aa[program][hat]['allow']['netdomain'], 
self.other.aa[program][hat]['allow']['netdomain'], self.same_file)
  File "/home/cb/apparmor/HEAD-CLEAN/utils/apparmor/cleanprofile.py", line 147, 
in delete_net_duplicates
    for sock_type in netrules_other['rule'][fam].keys():
RuntimeError: dictionary changed size during iteration



=== modified file 'utils/apparmor/cleanprofile.py'
--- utils/apparmor/cleanprofile.py      2014-02-12 23:54:00 +0000
+++ utils/apparmor/cleanprofile.py      2014-09-03 23:41:11 +0000
@@ -144,7 +144,7 @@
                         netrules_other['rule'].pop(fam)
                         deleted += 1
             else:
-                for sock_type in netrules_other['rule'][fam].keys():
+                for sock_type in list(netrules_other['rule'][fam].keys()):
                     if netrules['rule'].get(fam, False):
                         if netrules['rule'][fam].get(sock_type, False):
                             if not same_profile:


Regards,

Christian Boltz
-- 
The goal is simple: no more gnome related bugs in the 12.2 release :)  
(ok, we ARE optimists).   [Dominique Leuenberger in opensuse-factory]


-- 
AppArmor mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/apparmor

Reply via email to