Fix recovery of readlink() when /proc/self/exe is missing

https://github.com/upx/upx/issues/897
	modified:   ../misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
	modified:   stub/src/arm.v4a-linux.elf-fold.S
           plus generated .h
This commit is contained in:
John Reiser 2025-03-16 12:37:57 -07:00
parent 6f650ca16f
commit 1c5fae74e0
5 changed files with 31 additions and 31 deletions

View File

@ -49,11 +49,11 @@ expected_sha256sums__t110_compress_ucl_nrv2b_3_no_filter="\
e4270e47b2a4051b88189c286a2d5d56eb10a278d9608a5d1cc0d160fca6c695 *amd64-linux.elf/upx-3.91
5f2cf93c00ac36ab39fd3aaa487ac742f66abd08966af205a6e0162867a4aa2d *amd64-linux.elf/upx-3.95
822718cc0f6ac5e57bb23eeb65be6f3f7e73df8b062853abddcc924ec8207596 *amd64-win64.pe/upx-3.95.exe
22ffdfff46f3c467f30e8a0c026abf39eefb46433415a5e3810eae190a1e2694 *arm-linux.elf/upx-3.95
d575893dea1609b183aa489a956f827a8e3d0b904f9d0604189e93747682583a *arm-linux.elf/upx-3.95
1440d6b44968954baf56fbc2a0739a51873455876114d4445ae4b67cb5e7893b *arm-wince.pe/upx-3.91.exe
852d87cf51a2607c532d6ea340d829b63edd40f730bbf9981e36d47c462ba5e0 *arm64-linux.elf/upx-3.95
97457d7945b6708bc714cb93a225e3b0532fee7bf926b6578dd4ac569d6f7ca1 *armeb-linux.elf/upx-3.91
a48928a22f71f1acd612f8bd0a469b86724d06639e46790d5e79f2b2cc728f87 *armeb-linux.elf/upx-3.95
b49b1dc6f24347e941075ada06ec2e9e9a8cc5ef83ab41ee9b9fdebfe8136b4d *armeb-linux.elf/upx-3.91
a6ab9e16513837e37ee2a7177f5021784e55f898654802b12deac3462bc63728 *armeb-linux.elf/upx-3.95
a7ee051c5f9dcf233e2ee248274121b99fb8f098eff95469bc0638a7423723f0 *i386-dos32.djgpp2.coff/upx-3.91.exe
85cf31be166cb59587a99419cdd0fc5a79825d7508ab2c9a4bc0d700d603354d *i386-dos32.djgpp2.coff/upx-3.95.exe
caed1ea1e598d11249f7d91db5041c94854bb63f931da34faebe9e7f06bc8e9e *i386-linux.elf/upx-3.91
@ -72,11 +72,11 @@ expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\
212345cd8a4b24d78f87a7788f788221736783361956082e3388dd6985718eb9 *amd64-linux.elf/upx-3.91
bbbdd2adaeca79dbcbc894483941b4662f64e87034d80dede3f6142fb694a81c *amd64-linux.elf/upx-3.95
5ab022e2c3ecb09931e2181fb5f7699f35e2b453b54c823e42653c84b0df5f2c *amd64-win64.pe/upx-3.95.exe
da4fce040245d64e49ade0e03d0145f304a676eb6c483a6cb2cb41dade78832e *arm-linux.elf/upx-3.95
b09f2295fa930623498daeaa483dc79301417906595903006a5be4c982d49792 *arm-linux.elf/upx-3.95
53121baf42c85991900aa3947f3d817fe6e894bc6f325ab1d576de6fba5fbcbf *arm-wince.pe/upx-3.91.exe
d5d57b5f5052b0da7956974669e5ba32ea3320e712ea92c932aa285eb8f695d0 *arm64-linux.elf/upx-3.95
d58ba72377a494b8274784341eca1d1d044802e9d8b4603ec6d8159915091873 *armeb-linux.elf/upx-3.91
d85fb7eb9c79573a5d37fe35a2dbe988d242364835eaf0d67ddf7ef601d395ed *armeb-linux.elf/upx-3.95
0e1dff50ffc8534497cb4cca248afe73b9d1c59bdb1f13829d9f0f454d551a1f *armeb-linux.elf/upx-3.91
2887dd3498f0a2b3298d7003f4fefab3ee9aa0fd36ab81e84954c5550b296e78 *armeb-linux.elf/upx-3.95
51e4faea51e12c7442b27bb50150f532ac51d8102f77a669cbce82f2675a2ef2 *i386-dos32.djgpp2.coff/upx-3.91.exe
1196f578ab0b862bae8ac6b5166b770f072cf0ac521a2a23a6347c19ea82a0da *i386-dos32.djgpp2.coff/upx-3.95.exe
fbcdf5ce2c0ae2c67d0cd08d1be2c133ee692ff3353859a437496530963330f1 *i386-linux.elf/upx-3.91
@ -95,11 +95,11 @@ expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\
f172586d855f2cb1f3a9c69e4db1b7acc6dd1be98483f476ffc2e512cb446e8d *amd64-linux.elf/upx-3.91
499d8c8c2a0a493a42673ea25377fb26a0788cf2437ded0e67b3e7b40f7fdebd *amd64-linux.elf/upx-3.95
7bd7cd37093200fa94d21dd7fdfef4d7fb9c3049fbf5f408f1f242cb8d9c6a55 *amd64-win64.pe/upx-3.95.exe
7303294f6c559315ad83e26a3604436fa168527bf28cc12f8d0c899bcfea9234 *arm-linux.elf/upx-3.95
b6d8889b149e307a17bcf639a54d605540d8cdff8ceb7a77be1afddd4f7dd4f4 *arm-linux.elf/upx-3.95
ad0a7a18e87657d28260b7c527d284863becd3c5f92259c570125465f88d4042 *arm-wince.pe/upx-3.91.exe
2853e7f47c6581c794d1caf62c21c37e02f20dd3a3019d65071b2ded6cba5356 *arm64-linux.elf/upx-3.95
569771289b0aaa231bc54d65cf041c394a9fab2cb120021b25a775507b23706a *armeb-linux.elf/upx-3.91
b4cf235a0c43ffcedf07a6dabf71b885713c131c93799d068b13f7126a37afaf *armeb-linux.elf/upx-3.95
e9bbde47c549e4d672304421b17684a157e0de29d0e29c70215d1a8c01850630 *armeb-linux.elf/upx-3.91
c962519bb69e9c90b171fd4d58e151903434dae0df2f0ecfe600141062e1aca4 *armeb-linux.elf/upx-3.95
6fcdc8e34ce8b3501db2260c8a921c6e963954fdeffedfefca353a27bcc02d56 *i386-dos32.djgpp2.coff/upx-3.91.exe
6f4f901c1838252f9b3104060475a6f13a2ebec830096ff28d870148580e4287 *i386-dos32.djgpp2.coff/upx-3.95.exe
982053071d4665fae51b7860c56161cf21038fc4e1fed9fcde7d49cee84e4364 *i386-linux.elf/upx-3.91
@ -118,11 +118,11 @@ expected_sha256sums__t140_compress_lzma_2_no_filter="\
1eb7e06aa5c65ba8e91b8ef2e42fc686bbe113a8e9475ed9e5bd31df422665cf *amd64-linux.elf/upx-3.91
98a3b792518ac1fe21bbf17fabaf3f227bf44d00830f78cbe191b9c541f5da10 *amd64-linux.elf/upx-3.95
a55ec5a7f2911f6da8b9336daf4f1051e753cfb7a4458c7f7baa6b63340c6daf *amd64-win64.pe/upx-3.95.exe
be799f57dc1401956561b6e2c0bbe3e3cf20f878f84ee4a58bdddcfb3479d2f9 *arm-linux.elf/upx-3.95
143e676944cb2c28104237f0a94e2ac6d8801a29a48943855dc2eb6193fc93c4 *arm-linux.elf/upx-3.95
7a6c603eecf214e5d6742f1fce922223c97c8bd2527678a968640dd6c1bc0d71 *arm-wince.pe/upx-3.91.exe
943c7e0525340ea5d88efa1bfb2d02709115c8a72bfaa6c6075648a85bf52386 *arm64-linux.elf/upx-3.95
69e506aa05b83d78ebd2ef1aa1dd68e732a5c602fe6d6ee2a6a9b0424ba9c826 *armeb-linux.elf/upx-3.91
fcf11333cd639030ef57d3768b7774e2109229c81705696afa93bcc1edf5f65d *armeb-linux.elf/upx-3.95
d937be72d5f1e6d238a14ece4b090ba213f0b68911566d95ecadb784c36aa185 *armeb-linux.elf/upx-3.91
70431949906f188d0c25bff89a1b58f7ba24d100329bc23ac6c0855402077436 *armeb-linux.elf/upx-3.95
7a8eaa5139b95cc56591200fce62d3c9af163671467952cab6fcf487318107bb *i386-dos32.djgpp2.coff/upx-3.91.exe
9b5fc0f54a5f811bda190c36fb2fa5c5b03c6c3de0c62693e4191230b5a419b8 *i386-dos32.djgpp2.coff/upx-3.95.exe
2b42b27136d168eb52f6e0d7aca949ed8f2c81b8b109e3e26a40860d8ef1c1bb *i386-linux.elf/upx-3.91
@ -141,11 +141,11 @@ expected_sha256sums__t150_compress_ucl_2_all_filters="\
9609ebcf125be2110901d340eaec653a950edd9604a9a1cba995b57a0cd3145f *amd64-linux.elf/upx-3.91
8e58fe3307de273a50a0ce56c912a2609eddc3577451f2f0d4cf32f600fe263b *amd64-linux.elf/upx-3.95
cbb5c90bd9195bd9e3acd931312a70deeccfab5540f398ceda8826f8d6b332bf *amd64-win64.pe/upx-3.95.exe
de791c7ff4022de81bf0184caa5b894defba1387609ad96c8ffd3840180a5d21 *arm-linux.elf/upx-3.95
0a4adb8af99372ebfe8162b3410cb79119292316bc5b47d066439ab76b62c8a4 *arm-linux.elf/upx-3.95
76a5f0518fc797bd3f132ce6eb61ca187b5d463f191417883a73d4584716c23a *arm-wince.pe/upx-3.91.exe
ae557d8dd4e385f25f25585dd36b651f57d3bb004ba70883f445922258af2ca2 *arm64-linux.elf/upx-3.95
26a8bccf6a2f83437929b4b332e2b77a345bf63380701e8bbbefe360f674f7ea *armeb-linux.elf/upx-3.91
e1f7802433553aa451b3ba733ad8195c7cbec1801da1f4d50bfda9080208ba48 *armeb-linux.elf/upx-3.95
36c546d46cefd18b44d152ad35a67be9bdbe4a7992451c25f52a81b2527c1e3d *armeb-linux.elf/upx-3.91
c59bcff2bd09f04595318e632437b46108714181b44f17a40344c8996848b497 *armeb-linux.elf/upx-3.95
aa05c3a2953f0f2d70842cba45786b707a79ffef22fd084f51e304762cc67765 *i386-dos32.djgpp2.coff/upx-3.91.exe
c677241e9a8753ba1332ac3875ab6398fb2d792d2627edd9e58f2535b3131abe *i386-dos32.djgpp2.coff/upx-3.95.exe
2a20cc3ea1de3604f604dcc46876329a5f12c67af8a3c3ecf41ffb0513cc1c93 *i386-linux.elf/upx-3.91
@ -164,11 +164,11 @@ expected_sha256sums__t160_compress_all_methods_1_no_filter="\
944db49c081514091f6fc1535faef34b14de5a1751b93c836f2b63784d381f9a *amd64-linux.elf/upx-3.91
4d5734c8012b07a1dd4d5fc3aef0d938095c657bfba2c580bf733351ee9ea70e *amd64-linux.elf/upx-3.95
5a0ecb45658904bcd0b823b77dba039c9814e2eff4ed429784c36b7074b9858c *amd64-win64.pe/upx-3.95.exe
15f20fe317673d0bdfd1df33ca9d65f5bd8e63687eca21a58f9a45c023d1e427 *arm-linux.elf/upx-3.95
b720011ef39a0c808745a74c027a8cbcb855ffaf0d27fb2d708ff09f8c70a4fd *arm-linux.elf/upx-3.95
fdbe0395ac401285edb9c2f9bfbb0fbd3c0eaad5052a88d8369b1a66b35a8a3e *arm-wince.pe/upx-3.91.exe
1604d6a26182a51f5ea48ba0593463d9d0a92e4e5871f3b724126ba71f8b8fc7 *arm64-linux.elf/upx-3.95
d7fd8434d98063e61791fc855aa370857fd0c6231d24252fc1f72c8e0247f811 *armeb-linux.elf/upx-3.91
44caaa7feb000fccb36de634127a6d7dd16fc426865ee0701ce00c5b5239af86 *armeb-linux.elf/upx-3.95
8ed059360f8c4cb5ff86bc261dd05240a85a6f9fcbc9c11afb30b5bfde47bb93 *armeb-linux.elf/upx-3.91
978cafeb00e16f963c3d40230a3180a960e2689578c468c4cd14580941f76038 *armeb-linux.elf/upx-3.95
0a0099246096d20ff6035a4df6566954b9d8aff9ed8fdbd35aa5ee4995b02bfe *i386-dos32.djgpp2.coff/upx-3.91.exe
5df7aa9f0896df87eb8798119ad16a9b89c87a7568a67339e33b5baa99ec361f *i386-dos32.djgpp2.coff/upx-3.95.exe
32e35ad4982d9fbc2f56b7828a3210d201d0fd58c64139c4cb1352870d7a954f *i386-linux.elf/upx-3.91
@ -187,11 +187,11 @@ expected_sha256sums__t170_compress_all_methods_no_lzma_5_no_filter="\
e805a351f5856e0c31cac124b5e58c2c8462c908f9ecb800f72576d20f035944 *amd64-linux.elf/upx-3.91
80afe65007ac6608fabea9947d0a1aef8d46f296403237e132ffdba56d95a80e *amd64-linux.elf/upx-3.95
e07e9babdeb12fddeebbfa1b0293163cc5e63017d6f0933d02587c8da1e90a82 *amd64-win64.pe/upx-3.95.exe
a5885d4c723a6b5c6455d44044d329352824530b2ddcf7140f79b98422550009 *arm-linux.elf/upx-3.95
9018c5c28091b5891f5ede833dbc1cbee0168b40a8fd518761f29b2077b115eb *arm-linux.elf/upx-3.95
8d1706ab02013b536c3a4cec20d40a96591ffa45fdcb464ccd3f038567006d79 *arm-wince.pe/upx-3.91.exe
9c74eb733125ce789eb07de47683dbdc296e2ee2c78c3656562cdbe38dedc16f *arm64-linux.elf/upx-3.95
c7b0d7694fb0c317444edd190d5ca2cc57b22a73e0c5452f7f1f7693dc11d5fb *armeb-linux.elf/upx-3.91
a3f8a458c2e7ff9bbae1ce240fa097272252e8b3e8041201cc24559fd2c2c409 *armeb-linux.elf/upx-3.95
8dfeb1b56bb9f0bf794c8d798fb3e6d0e73c91f18b667686561474c82181422a *armeb-linux.elf/upx-3.91
6e499eee4d5c5af2c5cac5e176f3e84034b7ead1f6bf505523d6e57dc0fdc18a *armeb-linux.elf/upx-3.95
dda2c348c43741a1bd65049a8e7b51be1ebf873d215370ec002185c85390c168 *i386-dos32.djgpp2.coff/upx-3.91.exe
560392427ded22f2f3fea59ef10e55d65cf841001e67b1e4558ef13514baa602 *i386-dos32.djgpp2.coff/upx-3.95.exe
668b31d2e2b8787b4360e243f36d69c62f02a8c9ac8325c0c3afbe49465e5b7f *i386-linux.elf/upx-3.91

View File

@ -33,8 +33,8 @@
/* clang-format off */
#define STUB_ARM_V4A_LINUX_ELF_FOLD_SIZE 36672
#define STUB_ARM_V4A_LINUX_ELF_FOLD_ADLER32 0x142e9fd4
#define STUB_ARM_V4A_LINUX_ELF_FOLD_CRC32 0x422aa73a
#define STUB_ARM_V4A_LINUX_ELF_FOLD_ADLER32 0x0cafa044
#define STUB_ARM_V4A_LINUX_ELF_FOLD_CRC32 0xf1684c51
unsigned char stub_arm_v4a_linux_elf_fold[36672] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0,
@ -63,7 +63,7 @@ unsigned char stub_arm_v4a_linux_elf_fold[36672] = {
/* 0x0170 */ 122, 0, 0, 26,144, 0, 79,226, 0, 16,160,227, 5,112,160,227,
/* 0x0180 */ 0, 0, 0,239, 0,128,160,225, 1, 42,160,227, 9, 16,160,225,
/* 0x0190 */ 172, 0, 79,226, 1, 32, 66,226, 85,112,160,227, 0, 0, 0,239,
/* 0x01a0 */ 1, 10,112,227, 0, 16,160, 33, 14, 0,160, 35, 0, 32,129,224,
/* 0x01a0 */ 1, 10,112,227,192, 16, 79, 34, 14, 0,160, 35, 0, 32,129,224,
/* 0x01b0 */ 6, 0,160,225, 0, 48,160,227, 1, 48, 96,229, 1, 48,114,229,
/* 0x01c0 */ 1, 48, 96,229, 2, 0, 81,225, 96, 0, 0, 26, 61, 48,160,227,
/* 0x01d0 */ 1, 48, 96,229, 32, 48,160,227, 1, 48, 96,229, 1, 48, 96,229,

View File

@ -33,8 +33,8 @@
/* clang-format off */
#define STUB_ARM_V5A_LINUX_ELF_FOLD_SIZE 36819
#define STUB_ARM_V5A_LINUX_ELF_FOLD_ADLER32 0x31f9c1f4
#define STUB_ARM_V5A_LINUX_ELF_FOLD_CRC32 0x854fb9ef
#define STUB_ARM_V5A_LINUX_ELF_FOLD_ADLER32 0x6acac264
#define STUB_ARM_V5A_LINUX_ELF_FOLD_CRC32 0x5d3f8524
unsigned char stub_arm_v5a_linux_elf_fold[36819] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0,
@ -63,7 +63,7 @@ unsigned char stub_arm_v5a_linux_elf_fold[36819] = {
/* 0x0170 */ 122, 0, 0, 26,144, 0, 79,226, 0, 16,160,227, 5,112,160,227,
/* 0x0180 */ 0, 0, 0,239, 0,128,160,225, 1, 42,160,227, 9, 16,160,225,
/* 0x0190 */ 172, 0, 79,226, 1, 32, 66,226, 85,112,160,227, 0, 0, 0,239,
/* 0x01a0 */ 1, 10,112,227, 0, 16,160, 33, 14, 0,160, 35, 0, 32,129,224,
/* 0x01a0 */ 1, 10,112,227,192, 16, 79, 34, 14, 0,160, 35, 0, 32,129,224,
/* 0x01b0 */ 6, 0,160,225, 0, 48,160,227, 1, 48, 96,229, 1, 48,114,229,
/* 0x01c0 */ 1, 48, 96,229, 2, 0, 81,225, 96, 0, 0, 26, 61, 48,160,227,
/* 0x01d0 */ 1, 48, 96,229, 32, 48,160,227, 1, 48, 96,229, 1, 48, 96,229,

View File

@ -33,8 +33,8 @@
/* clang-format off */
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_SIZE 36689
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_ADLER32 0x79d3a405
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_CRC32 0x96b748cf
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_ADLER32 0x7736a475
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_CRC32 0x9006bee9
unsigned char stub_armeb_v4a_linux_elf_fold[36689] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0,
@ -63,7 +63,7 @@ unsigned char stub_armeb_v4a_linux_elf_fold[36689] = {
/* 0x0170 */ 26, 0, 0,122,226, 79, 0,144,227,160, 16, 0,227,160,112, 5,
/* 0x0180 */ 239, 0, 0, 0,225,160,128, 0,227,160, 42, 1,225,160, 16, 9,
/* 0x0190 */ 226, 79, 0,172,226, 66, 32, 1,227,160,112, 85,239, 0, 0, 0,
/* 0x01a0 */ 227,112, 10, 1, 33,160, 16, 0, 35,160, 0, 14,224,129, 32, 0,
/* 0x01a0 */ 227,112, 10, 1, 34, 79, 16,192, 35,160, 0, 14,224,129, 32, 0,
/* 0x01b0 */ 225,160, 0, 6,227,160, 48, 0,229, 96, 48, 1,229,114, 48, 1,
/* 0x01c0 */ 229, 96, 48, 1,225, 81, 0, 2, 26, 0, 0, 96,227,160, 48, 61,
/* 0x01d0 */ 229, 96, 48, 1,227,160, 48, 32,229, 96, 48, 1,229, 96, 48, 1,

View File

@ -199,7 +199,7 @@ r_pse .req r8
sub arg3,arg3,#1 @ room for null terminator
do_sys7t __NR_readlink // ENOENT is OK
cmn r0,#1<<12
movcs r1,arg1 @ FIXME? "/proc/self/exe"
adrcs r1,proc_self_exe
movcs r0,#14 @ strlen("/proc/self/exe")
link_ok:
add r2,r1,r0 @ end