LD_PRELOAD quirks.so can segfault if expected environment variable is not present
Found while testing LLVM, and only seems to occur on x86_64.
Commit 9a166c42 introduced the expectation of the presence of the UN_ARCH
environment variable. This is export
ed and normally causes no problems. The LLVM test suite appears to clean the environment at times, resulting in a NULL pointer dereference.
********************
FAIL: LLVM :: tools/llvm-objcopy/ELF/remove-linked-section.test (1511 of 46965)
******************** TEST 'LLVM :: tools/llvm-objcopy/ELF/remove-linked-section.test' FAILED ********************
Script:
--
: 'RUN: at line 1'; /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/bin/yaml2obj /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/test/tools/llvm-objcopy/ELF/remove-linked-section.test -o /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-o
bjcopy/ELF/Output/remove-linked-section.test.tmp.o
: 'RUN: at line 2'; not /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/bin/llvm-objcopy -R .foo /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-objcopy/ELF/Output/remove-linked-section.test.tmp.o /usr/src/packages/user/llvm14/src/llvm-14
.0.6.src/build/test/tools/llvm-objcopy/ELF/Output/remove-linked-section.test.tmp1 2>&1 >/dev/null | /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/bin/FileCheck /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/test/tools/llvm-objcopy/ELF/remove-linked-section.te
st --check-prefix=ERR1 -DINPUT=/usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-objcopy/ELF/Output/remove-linked-section.test.tmp.o
: 'RUN: at line 3'; cp /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-objcopy/ELF/Output/remove-linked-section.test.tmp.o /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-objcopy/ELF/Output/remove-linked-section.test.tmp2
: 'RUN: at line 4'; not /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/bin/llvm-strip --no-strip-all -R .foo /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-objcopy/ELF/Output/remove-linked-section.test.tmp2 2>&1 >/dev/null | /usr/src/pa
ckages/user/llvm14/src/llvm-14.0.6.src/build/bin/FileCheck /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/test/tools/llvm-objcopy/ELF/remove-linked-section.test --check-prefix=ERR2 -DINPUT=/usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-objcopy/
ELF/Output/remove-linked-section.test.tmp2
: 'RUN: at line 22'; /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/bin/llvm-objcopy --allow-broken-links -R .foo /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-objcopy/ELF/Output/remove-linked-section.test.tmp.o /usr/src/packages/user/
llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-objcopy/ELF/Output/remove-linked-section.test.tmp3
: 'RUN: at line 23'; /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/bin/llvm-readobj --sections /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-objcopy/ELF/Output/remove-linked-section.test.tmp3 | /usr/src/packages/user/llvm14/src/llvm-1
4.0.6.src/build/bin/FileCheck /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/test/tools/llvm-objcopy/ELF/remove-linked-section.test --check-prefix=SECTIONS --implicit-check-not=.foo
: 'RUN: at line 24'; cp /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-objcopy/ELF/Output/remove-linked-section.test.tmp.o /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-objcopy/ELF/Output/remove-linked-section.test.tmp4
: 'RUN: at line 25'; /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/bin/llvm-strip --no-strip-all --allow-broken-links -R .foo /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-objcopy/ELF/Output/remove-linked-section.test.tmp4
: 'RUN: at line 26'; /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/bin/llvm-readobj --sections /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-objcopy/ELF/Output/remove-linked-section.test.tmp4 | /usr/src/packages/user/llvm14/src/llvm-1
4.0.6.src/build/bin/FileCheck /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/test/tools/llvm-objcopy/ELF/remove-linked-section.test --check-prefix=SECTIONS --implicit-check-not=.foo
--
Exit Code: 139
Command Output (stderr):
--
/usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-objcopy/ELF/Output/remove-linked-section.test.script: line 9: 5080 Segmentation fault cp /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-objcopy/ELF/Output/remove-linked-
section.test.tmp.o /usr/src/packages/user/llvm14/src/llvm-14.0.6.src/build/test/tools/llvm-objcopy/ELF/Output/remove-linked-section.test.tmp2
--
^C interrupted by user, skipping remaining tests
and from dmesg
:
[424380.800216] cp[38431]: segfault at 0 ip 00007f6ab41cf655 sp 00007ffcab558e60 error 4 in quirks.so[7f6ab41cf000+200000]
[424380.800242] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[424380.894915] cp[38855]: segfault at 0 ip 00007ff02d314655 sp 00007fff89942480 error 4 in quirks.so[7ff02d314000+200000]
[424380.894932] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[424380.898271] cp[38869]: segfault at 0 ip 00007f519642a655 sp 00007ffdae7219d0 error 4 in quirks.so[7f519642a000+200000]
[424380.898285] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[424380.899682] cp[38877]: segfault at 0 ip 00007fa51c903655 sp 00007ffd060a46b0 error 4 in quirks.so[7fa51c903000+200000]
[424380.899700] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[424380.912903] cp[38939]: segfault at 0 ip 00007fe2e4b1d655 sp 00007ffe6f2897e0 error 4 in quirks.so[7fe2e4b1d000+200000]
[424380.912920] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[439480.762061] cp[56110]: segfault at 0 ip 00007facfe8ca655 sp 00007ffe0c0fec00 error 4 in quirks.so[7facfe8ca000+200000]
[439480.762074] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[439483.053417] cp[59390]: segfault at 0 ip 00007f63373dc655 sp 00007ffee93cab60 error 4 in quirks.so[7f63373dc000+200000]
[439483.053452] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[439485.042358] cp[60385]: segfault at 0 ip 00007f4aca5d2655 sp 00007ffd79911f00 error 4 in quirks.so[7f4aca5d2000+200000]
[439485.042374] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[439485.205536] cp[60742]: segfault at 0 ip 00007f08c19f3655 sp 00007ffd2c896460 error 4 in quirks.so[7f08c19f3000+200000]
[439485.205563] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[439485.265020] cp[60856]: segfault at 0 ip 00007fa5bd865655 sp 00007ffe3e00e580 error 4 in quirks.so[7fa5bd865000+200000]
[439485.265042] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[439485.770956] cp[61790]: segfault at 0 ip 00007f4aca48b655 sp 00007fff77ec9870 error 4 in quirks.so[7f4aca48b000+200000]
[439485.770977] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[439489.062679] cat[65307]: segfault at 0 ip 00007fa6dc892655 sp 00007ffd539cf4c0 error 4 in quirks.so[7fa6dc892000+200000]
[439489.062696] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[439492.704753] cp[70221]: segfault at 0 ip 00007f259bbe0655 sp 00007ffe52cef390 error 4 in quirks.so[7f259bbe0000+200000]
[439492.704770] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[439493.233473] cp[71038]: segfault at 0 ip 00007f67a6554655 sp 00007ffeddd9abb0 error 4 in quirks.so[7f67a6554000+200000]
[439493.233498] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[439493.263181] cp[71085]: segfault at 0 ip 00007f5186b8b655 sp 00007ffee8347520 error 4 in quirks.so[7f5186b8b000+200000]
[439493.263198] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[439493.294310] cp[71140]: segfault at 0 ip 00007f29c338e655 sp 00007ffc203c0ce0 error 4 in quirks.so[7f29c338e000+200000]
[439493.294329] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[439493.313316] cp[71180]: segfault at 0 ip 00007fd615849655 sp 00007fffa9fb8130 error 4 in quirks.so[7fd615849000+200000]
[439493.313335] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
[439493.906957] cp[72187]: segfault at 0 ip 00007ffa17498655 sp 00007ffe2b943040 error 4 in quirks.so[7ffa17498000+200000]
[439493.906976] Code: 00 00 00 00 00 e9 db fe ff ff 55 48 89 e5 48 83 ec 20 48 89 7d e8 48 8d 3d f1 00 00 00 e8 53 fe ff ff 48 89 45 f8 48 8b 45 f8 <0f> b6 00 84 c0 74 1a 48 8b 4d f8 48 8b 45 e8 ba 41 00 00 00 48 89
...
(why cp
requires uname
is a separate question).