On 12/30/2016 01:13 PM, Christian Boltz wrote: > Hello, > > ldd exits with $? == 1 if a file is 'not a dynamic executable'. > This is correct behaviour of ldd, so we should handle it instead of > raising an exception ;-) > > Also extend fake_ldd and add a test to test-aa.py to cover this. > > > I propose this patch for trunk, 2.10 and 2.9. > > Note that 2.10 and 2.9 don't have tests for get_reqs() nor fake_ldd, > so those branches will only get the aa.py changes. > > Acked-by: John Johansen <john.johan...@canonical.com>
> > [ 01-ldd-ret-1.diff ] > > === modified file ./utils/apparmor/aa.py > --- utils/apparmor/aa.py 2016-10-14 20:31:20.282043000 +0200 > +++ utils/apparmor/aa.py 2016-12-30 22:05:14.686659297 +0100 > @@ -363,9 +363,9 @@ > raise AppArmorException('Can\'t find ldd') > > ret, ldd_out = get_output([ldd, file]) > - if ret == 0: > + if ret == 0 or ret == 1: > for line in ldd_out: > - if 'not a dynamic executable' in line: > + if 'not a dynamic executable' in line: # comes with ret == 1 > break > if 'cannot read header' in line: > break > === modified file ./utils/test/fake_ldd > --- utils/test/fake_ldd 2016-10-01 20:33:23.421684000 +0200 > +++ utils/test/fake_ldd 2016-12-30 21:59:18.940461775 +0100 > @@ -44,6 +44,10 @@ > print(' linux-vdso.so.1 (0x00007ffde132b000)') > > > +elif sys.argv[1] == '/AATest/sbin/ldconfig': > + print(' not a dynamic executable') > + sys.exit(1) # ldd exits with $? == 1 in this case > + > elif sys.argv[1].startswith('/tmp/aa-test-'): # test file generated by > test-aa.py > print(' not a dynamic executable') > > === modified file ./utils/test/test-aa.py > --- utils/test/test-aa.py 2016-10-01 21:00:58.949770000 +0200 > +++ utils/test/test-aa.py 2016-12-30 22:01:06.867913164 +0100 > @@ -94,6 +94,7 @@ > tests = [ > ('/AATest/bin/bash', ['/AATest/lib64/libreadline.so.6', > '/AATest/lib64/libtinfo.so.6', '/AATest/lib64/libdl.so.2', > '/AATest/lib64/libc.so.6', '/AATest/lib64/ld-linux-x86-64.so.2']), > ('/tmp/aa-test-foo', []), > + ('/AATest/sbin/ldconfig', []), # comes with $? == 1 > ] > > def _run_test(self, params, expected): > > > Regards, > > Christian Boltz > > > -- AppArmor mailing list AppArmor@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor