[apparmor] [PATCH] utils: Do not attempt to add same profile file again
Christian Boltz
apparmor at cboltz.de
Tue Nov 28 20:59:41 UTC 2017
Hello,
Am Dienstag, 28. November 2017, 19:04:03 CET schrieb Goldwyn Rodrigues:
> From: Goldwyn Rodrigues <rgoldwyn at suse.com>
>
> If the profile in profles and profile_data are the same, then don't
> attempt to attach.
>
> 1. mkdir /tmp/apparmor.d/
> cp -r /etc/apparmor.d/abstractions /tmp/apparmor.d/
> cp -r /etc/apparmor.d/tunables /tmp/apparmor.d/
>
> 2. Generate basic profiles for the all executable files in one dir:
> aa-autodep -d /tmp/apparmor.d/ /usr/sbin/*
Nice[tm].
# aa-autodep -d /tmp/apparmor.d/ /usr/sbin/*
Writing updated profile for /usr/sbin/a2enflag.
ERROR: Conflicting profiles for netstat defined in two files:
- /usr/share/apparmor/extra-profiles/bin.netstat
- /usr/share/apparmor/extra-profiles/bin.netstat
So one profile gets written successfully, and things explode on the
second binary. Looks like the inactive profiles get loaded more than
once :-(
While your patch will "solve" that, I don't really like it because it
covers the underlaying bug, which is...
def autodep(bin_name, pname=''):
# ...
read_inactive_profiles()
# ...
so autodep() calls read_inactive_profiles() each time it's called (= for
each binary).
The better fix is to make sure read_inactive_profiles doesn't do
anything if it ran before. (Calling it only once would be even better,
but since we have several autodep() calls, it would be much harder to
implement.)
I don't really like the idea to introduce a global variable
("read_inactive_already_done"), therefore I searched for ways to avoid
them and found out that functions can have attributes. Simple example:
def foo():
if hasattr(foo, 'done'):
print('done')
return
foo.done = True
print('not done')
foo()
foo()
foo()
This will print (tested with py2 and py3):
not done
done
done
Source: https://stackoverflow.com/questions/279561/what-is-the-python-equivalent-of-static-variables-inside-a-function
(if someone thinks TMTOWTDI only applies to perl, read this ;-)
That all said - the patch I propose is
https://gitlab.com/apparmor/apparmor/merge_requests/17
Regards,
Christian Boltz
--
[suse-talk] > Allerdings sollte er mit unserer Art Humor zurechtkommen.
Wie jetzt?
Humor?
....Ich war schon immer so...
[> Helga Fischer und Thilo Alfred Bätzig in suse-linux]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.ubuntu.com/archives/apparmor/attachments/20171128/2279d4e9/attachment.sig>
More information about the AppArmor
mailing list