[apparmor] [PATCH] utils: Print aa-easyprof error to stderr upon manifest parsing error
Christian Boltz
apparmor at cboltz.de
Tue Dec 1 21:44:01 UTC 2015
Hello,
Am Montag, 30. November 2015 schrieb Tyler Hicks:
> A common usage of aa-easyprof is to pipe its stdout to a file
> representing an AppArmor profile. Errors must go to stderr.
>
> https://launchpad.net/bugs/1521400
>
> Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
> ---
> utils/aa-easyprof | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/utils/aa-easyprof b/utils/aa-easyprof
> index 93861ae..8e9db71 100755
> --- a/utils/aa-easyprof
> +++ b/utils/aa-easyprof
> @@ -53,7 +53,10 @@ if __name__ == "__main__":
> error("Could not read '%s': %s (%d)\n" % (opt.manifest,
>
> os.strerror(e.errno), e.errno)) - profiles =
> apparmor.easyprof.parse_manifest(manifest, opt) + try:
> + profiles = apparmor.easyprof.parse_manifest(manifest,
> opt)
> + except AppArmorException as e:
> + error(e.value)
> else: # fake up a tuple list when processing command line args
> profiles.append( (binary, opt) )
NAK.
aa-easyprof is using apparmor.fail for exception handling, so it doesn't
make sense to fix this only for aa-easyprof. We should fix this in
apparmor.fail so that everybody benefits ;-)
As a replacement for your patch, I propose:
[patch] Let the apparmor.fail error handler print to stderr
The patch also switches to using error() instead of a plain print() for
AppArmorException, which means prefixing the error message with 'ERROR: '
References: https://bugs.launchpad.net/apparmor/+bug/1521400
I propose this patch for trunk and 2.10.
[ 23-apparmor-fail-print-to-stderr.diff ]
=== modified file ./utils/apparmor/fail.py
--- utils/apparmor/fail.py 2015-07-07 14:45:43.982667000 +0200
+++ utils/apparmor/fail.py 2015-12-01 22:35:17.662935978 +0100
@@ -14,6 +14,8 @@
import tempfile
import traceback
+from apparmor.common import error
+
#
# Exception handling
#
@@ -27,8 +29,8 @@
(ex_cls, ex, tb) = exc_info
if ex_cls.__name__ == 'AppArmorException': # I didn't find a way to get this working with isinstance() :-/
- print('')
- print(ex.value)
+ print('', file=sys.stderr)
+ error(ex.value)
else:
(fd, path) = tempfile.mkstemp(prefix='apparmor-bugreport-', suffix='.txt')
file = os.fdopen(fd, 'w')
@@ -40,13 +42,13 @@
file.write('Please consider reporting a bug at https://bugs.launchpad.net/apparmor/\n')
file.write('and attach this file.\n')
- print(''.join(traceback.format_exception(*exc_info)))
- print('')
- print('An unexpected error occoured!')
- print('')
- print('For details, see %s' % path)
- print('Please consider reporting a bug at https://bugs.launchpad.net/apparmor/')
- print('and attach this file.')
+ print(''.join(traceback.format_exception(*exc_info)), file=sys.stderr)
+ print('', file=sys.stderr)
+ print('An unexpected error occoured!', file=sys.stderr)
+ print('', file=sys.stderr)
+ print('For details, see %s' % path, file=sys.stderr)
+ print('Please consider reporting a bug at https://bugs.launchpad.net/apparmor/', file=sys.stderr)
+ print('and attach this file.', file=sys.stderr)
def enable_aa_exception_handler():
'''Setup handle_exception() as exception handler'''
Regards,
Christian Boltz
--
If Ubuntu is a Volkswagen, then OpenSUSE is a Mercedes-Benz.
[http://blogs.zdnet.com/BTL/?p=8988]
More information about the AppArmor
mailing list