[apparmor] GSoC review r80..84

Christian Boltz apparmor at cboltz.de
Mon Sep 23 19:07:19 UTC 2013


Hello,

the review for r80 is attached. Maybe I'll add some comments on the UI 
later after actually testing aa-mergeprof ;-)

r81..84 look fine :-)


Regards,

Christian Boltz
-- 
http://www1.giga.de/gigahelp/index_gigahelp/0,3597,,00.html
| Leider scheint Euer Browser den Aufbau von Frames zu unterstützen ...
*Leider?* :)
Tut Lynx doch gar nicht. :)   [Andreas Kneib in suse-linux]
-------------- next part --------------
------------------------------------------------------------
revno: 80
committer: Kshitij Gupta <kgupta8592 at gmail.com
branch nick: apparmor-profile-tools
timestamp: Mon 2013-09-23 23:05:25 +0530
message:
  Fixes netrule deletion for includes


=== modified file 'Tools/aa-mergeprof'
--- Tools/aa-mergeprof	2013-09-23 14:02:25 +0000
+++ Tools/aa-mergeprof	2013-09-23 17:35:25 +0000
@@ -97,6 +97,36 @@
         base_other = cleanprofile.CleanProf(False, self.base, self.other)
         deleted += user_base.compare_profiles()
 
+    def conflict_mode(self, profile, hat, allow, path, mode, new_mode, old_mode):
+        conflict_modes = set('uUpPcCiIxX')

# uppercase I should never appear (but it can't hurt to check for it nevertheless ;-)
# also, I'm not aware of uppercase X

+        conflict_x= (old_mode | mode) & conflict_modes
+        if conflict_x:
+        #We may have conflicting x modes
+            if conflict_x & set('x'):
+                conflict_x.remove('x')
+            if conflict_x & set('X'):
+                conflict_x.remove('X')
+            if len(conflict_x) > 1:
+                q = apparmor.aa.hasher()
+                q['headers'] = [_('Path'), path]
+                q['headers'] += [_('Select the appropriate mode'), '']
+                options = []
+                options.append('%s: %s' %(mode, path, apparmor.aa.mode_to_str_user(apparmor.aa.flatten_mode((old_mode | new_mode) - (old_mode & conflict_x)))))
+                options.append('%s: %s' %(mode, path, apparmor.aa.mode_to_str_user(apparmor.aa.flatten_mode((old_mode | new_mode) - (new_mode & conflict_x)))))
+                q['options'] = options
+                q['functions'] = ['CMD_ALLOW', 'CMD_ABORT']

# I'll probably add a comment for the user interface after testing it, but it looks ok for now

+                done = False
+                while not done:
+                    ans, selected = apparmor.aa.UI_PromptUser(q)
+                    if ans == 'CMD_ALLOW':
+                        if selection == 0:
+                            self.user.aa[profile][hat][allow][path][mode] = (old_mode | new_mode) - (old_mode & conflict_x)
+                        elif selection == 1:
+                            self.user.aa[profile][hat][allow][path][mode] = (old_mode | new_mode) - (new_mode & conflict_x)
+                        else:
+                            raise apparmor.aa.AppArmorException(_('Unknown selection'))
+                        done = True



vim:ft=diff


More information about the AppArmor mailing list