apparmor/utils/test/fake_ldd
Christian Boltz 71f385fc83 Handle ldd $? == 1 in get_reqs()
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.


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.johansen@canonical.com> for trunk, 2.10 and 2.9.
2016-12-31 00:48:41 +01:00

60 lines
2.5 KiB
Python
Executable file

#!/usr/bin/python3
import sys
if len(sys.argv) != 2:
raise Exception('wrong number of arguments in fake_ldd')
if sys.argv[1] == '/AATest/bin/bash' or sys.argv[1] == '/bin/bash':
print(' linux-vdso.so.1 (0x00007ffcf97f4000)')
print(' libreadline.so.6 => /AATest/lib64/libreadline.so.6 (0x00007f2c41324000)')
print(' libtinfo.so.6 => /AATest/lib64/libtinfo.so.6 (0x00007f2c410f9000)')
print(' libdl.so.2 => /AATest/lib64/libdl.so.2 (0x00007f2c40ef5000)')
print(' libc.so.6 => /AATest/lib64/libc.so.6 (0x00007f2c40b50000)')
print(' /AATest/lib64/ld-linux-x86-64.so.2 (0x000055782c473000)')
elif sys.argv[1] == '/AATest/lib64/ld-2.22.so':
print(' linux-vdso.so.1 (0x00007ffcf97f4000)')
elif sys.argv[1] == '/AATest/lib64/libc-2.22.so':
print(' /AATest/lib64/ld-linux-x86-64.so.2 (0x0000556858473000)')
print(' linux-vdso.so.1 (0x00007ffe98912000)')
elif sys.argv[1] == '/AATest/lib64/libdl.so.2':
print(' linux-vdso.so.1 (0x00007ffec2538000)')
print(' libc.so.6 => /AATest/lib64/libc.so.6 (0x00007f8865346000)')
print(' /AATest/lib64/ld-linux-x86-64.so.2 (0x0000560c3bcee000)')
elif sys.argv[1] == '/AATest/lib64/libtinfo.so.6':
print(' linux-vdso.so.1 (0x00007fff30518000)')
print(' libc.so.6 => /AATest/lib64/libc.so.6 (0x00007fb6f2ea3000)')
print(' /AATest/lib64/ld-linux-x86-64.so.2 (0x00005631fe8d3000)')
elif sys.argv[1] == '/AATest/lib64/libreadline.so.6':
print(' linux-vdso.so.1 (0x00007ffcb5b62000)')
print(' libtinfo.so.6 => /AATest/lib64/libtinfo.so.6 (0x00007f2a4ed07000)')
print(' libc.so.6 => /AATest/lib64/libc.so.6 (0x00007f2a4e961000)')
print(' /AATest/lib64/ld-linux-x86-64.so.2 (0x000055f749c89000)')
elif sys.argv[1] == '/AATest/lib64/ld-linux-x86-64.so.2':
print(' statically linked')
elif sys.argv[1] == '/AATest/lib64/libc.so.6':
print(' /AATest/lib64/ld-linux-x86-64.so.2 (0x000055b65f7a9000)')
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')
elif sys.argv[1] == 'TEMPLATE':
print('')
print('')
print('')
else:
raise Exception('unknown parameter in fake_ldd: %s' % sys.argv[1])