[apparmor] [PATCH] utils: Print aa-easyprof error to stderr upon manifest parsing error
Tyler Hicks
tyhicks at canonical.com
Tue Dec 15 23:37:35 UTC 2015
On 2015-12-02 22:00:32, Christian Boltz wrote:
> Hello,
>
> Am Dienstag, 1. Dezember 2015 schrieb Christian Boltz:
> > 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 ;-)
I was simply making this call site apparmor.easyprof.* call sites which
catch AppArmorExceptions and print the error to stderr. If we want to
make this a global change, across all AppArmorExceptions, then we should
probably stop catching those exceptions in aa-easyprof.
Cleanup patch to follow.
> >
> > 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.
Acked-by: Tyler Hicks <tyhicks at canonical.com>
Tyler
>
> Some more testing shows that apparmor.fail needs
> from __future__ import print_function
> to ensure compability with python 2.x.
>
> Here's the updated patch:
>
>
> [ 23-apparmor-fail-print-to-stderr.diff ]
>
> --- utils/apparmor/fail.py 2015-12-02 21:53:34.635564749 +0100
> +++ utils/apparmor/fail.py 2015-12-02 21:54:34.795174617 +0100
> @@ -8,12 +8,16 @@
> #
> # ------------------------------------------------------------------
>
> +from __future__ import print_function # needed in py2 for print('...', file=sys.stderr)
> +
> import cgitb
> import os
> import sys
> import tempfile
> import traceback
>
> +from apparmor.common import error
> +
> #
> # Exception handling
> #
> @@ -27,8 +31,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 +44,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
> --
> I have also tried to understand how to write and install systemd stuff
> to start daemons and it definitely hasn't passed the "10 minute test".
> It definitely lacks better documentation, or I've been too lazy, I
> wouldn't exclude that from the equation :)
> [Pascal Bleser in opensuse-factory]
>
>
> --
> AppArmor mailing list
> AppArmor at lists.ubuntu.com
> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <https://lists.ubuntu.com/archives/apparmor/attachments/20151215/b2f80fdf/attachment-0001.pgp>
More information about the AppArmor
mailing list