[apparmor] [patch] aa.py / ask_the_question - simplify duplicate option prevention

Christian Boltz apparmor at cboltz.de
Sun Aug 24 14:44:40 UTC 2014


Hello,

this patch adds a add_to_options() helper function to aa.py which
- adds newpath to options if it's not already there
- returns the updated options and the index of newpath

This removes duplicated code for CMD_GLOB and CMD_GLOBEXT in 
ask_the_question()

It also adds duplicate prevention to CMD_NEW.


=== modified file 'utils/apparmor/aa.py'
--- utils/apparmor/aa.py        2014-08-17 16:16:33 +0000
+++ utils/apparmor/aa.py        2014-08-24 14:33:35 +0000
@@ -1921,30 +1931,19 @@
                                                 continue
 
                                         user_globs.append(ans)
-                                        options.append(ans)
-                                        default_option = len(options)
+                                        options, default_option = add_to_options(options, ans)
 
                             elif ans == 'CMD_GLOB':
                                 newpath = options[selected].strip()
                                 if not re_match_include(newpath):
                                     newpath = glob_path(newpath)
-
-                                    if newpath not in options:
-                                        options.append(newpath)
-                                        default_option = len(options)
-                                    else:
-                                        default_option = options.index(newpath) + 1
+                                    options, default_option = add_to_options(options, newpath)
 
                             elif ans == 'CMD_GLOBEXT':
                                 newpath = options[selected].strip()
                                 if not re_match_include(newpath):
                                     newpath = glob_path_withext(newpath)
-
-                                    if newpath not in options:
-                                        options.append(newpath)
-                                        default_option = len(options)
-                                    else:
-                                        default_option = options.index(newpath) + 1
+                                    options, default_option = add_to_options(options, newpath)
 
                             elif re.search('\d', ans):
                                 default_option = ans
@@ -2039,6 +2038,14 @@
                             else:
                                 done = False
 
+def add_to_options(options, newpath):
+    if newpath not in options:
+        options.append(newpath)
+        default_option = len(options)
+    else:
+        default_option = options.index(newpath) + 1
+    return (options, default_option)
+
 def glob_path(newpath):
     """Glob the given file path"""
     if newpath[-1] == '/':




Regards,

Christian Boltz
-- 
> [...] if the installation of a stupid package failed, [...]
AFAIK there is no package named `stupid'.
[> Raphael Schillings and Michael Gross in
 https://bugzilla.novell.com/show_bug.cgi?id=147588]




More information about the AppArmor mailing list