From 3c786acf2b5d038df8985986f3f4ecaadc74b5ba Mon Sep 17 00:00:00 2001 From: John Reiser Date: Sat, 24 Sep 2016 19:44:00 -0700 Subject: [PATCH] Fix bug in Mach-O stub. modified: amd64-darwin.macho-upxmain.exe modified: amd64-darwin.macho-upxmain.h modified: src/amd64-darwin.macho-upxmain.c --- src/stub/amd64-darwin.macho-upxmain.exe | Bin 4136 -> 4136 bytes src/stub/amd64-darwin.macho-upxmain.h | 12 ++++++------ src/stub/src/amd64-darwin.macho-upxmain.c | 3 +-- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/stub/amd64-darwin.macho-upxmain.exe b/src/stub/amd64-darwin.macho-upxmain.exe index 782637bd77d03919bbef27ee1b1c5d1d74e548e6..e5092ccd314e5d4673533ec17a318bd333168670 100644 GIT binary patch delta 457 zcmWlVPe>a<6vk)58rNw4&`>Ifn8Q{m^fFekQbiYb>qJKJ5RV?c^-`OFm!hD1cq{`g zgFP2|5xler1ud*8f-#C3#e-H*uwcg)A?+bhB*wSz@Obcj@Au}L<;-&CUFAXDBvpd7 z5)C^cb@R*RIi=3(_sBq0MO)I3_XKQaVLuDU910aKN7^~K+uV06e4(guE((}dLoMxd zE^Bc4w#a4SGb?lWp*tuc0-jo2PJRqR`dR}^z%SvusVto8RD=)?o3<~klvhqJo}ecy z9V@f&Jdsb^jgmiMa9XkZ4`yzzzoF>Qnw*wcjUDOTCPHi|xn5)T^_YBRrN-Hr14zFT z@Q)+>6BIP5PN~1izI!(gviSf2 delta 433 zcmZ3XutH(N1tB(0h7Sxtu!s#rGBB`lZhUl)ke+eS zr@K^OvJ|IOeeI5JcL|S9*9{)st_M82eNT9F`mO--7Z~35=&e2A(ObH~@T5=Ys~6&o z3=BShmp$qnbjNkbm2z)yK`*wct?R@!ymx+PFv-5~!x4%H^N&c2=Koy?7?h4Ho zd?kYa4|fN!craeDJYDquP%o)>N)1H0W>3{SQm@acRsS&B=RW6J(|pzI6%$@W~LQvW?V@40k-d|?dq641#& zn_h?k_4sr?n4HJu#ppkIC)ZTQos<2!9T@Lzp1^I*$hd3r8J^XmuYu})TfdcvJ9dZK z_;fz^>HPNM+2kHxdyqV@CS$|oZ@gZNx|1FGdO18g?}MZ@Cg0|J$;8Gv`53<%D;FCB KW60!>{N@1Waj0|v diff --git a/src/stub/amd64-darwin.macho-upxmain.h b/src/stub/amd64-darwin.macho-upxmain.h index c856b624..beffec59 100644 --- a/src/stub/amd64-darwin.macho-upxmain.h +++ b/src/stub/amd64-darwin.macho-upxmain.h @@ -32,8 +32,8 @@ #define STUB_AMD64_DARWIN_MACHO_UPXMAIN_EXE_SIZE 4136 -#define STUB_AMD64_DARWIN_MACHO_UPXMAIN_EXE_ADLER32 0x0ba0fe1b -#define STUB_AMD64_DARWIN_MACHO_UPXMAIN_EXE_CRC32 0x87768003 +#define STUB_AMD64_DARWIN_MACHO_UPXMAIN_EXE_ADLER32 0xb100fe8b +#define STUB_AMD64_DARWIN_MACHO_UPXMAIN_EXE_CRC32 0xf5a9d4fb unsigned char stub_amd64_darwin_macho_upxmain_exe[4136] = { /* 0x0000 */ 207,250,237,254, 7, 0, 0, 1, 3, 0, 0,128, 2, 0, 0, 0, @@ -265,18 +265,18 @@ unsigned char stub_amd64_darwin_macho_upxmain_exe[4136] = { /* 0x0e20 */ 1,205, 65, 57,223, 15,130,217,253,255,255, 72,131,196,120, 91, /* 0x0e30 */ 65, 92, 65, 93, 65, 94, 65, 95, 93,195,191,127, 0, 0, 0,232, /* 0x0e40 */ 50, 1, 0, 0, 85, 72,137,229, 65, 87, 65, 86, 65, 85, 65, 84, -/* 0x0e50 */ 83, 72,129,236, 24, 8, 0, 0, 68,139,109, 8, 76,141,101, 16, +/* 0x0e50 */ 83, 72,129,236, 24, 64, 0, 0, 68,139,109, 8, 76,141,101, 16, /* 0x0e60 */ 72,141, 5,221,255,255,255, 72, 37, 0, 0,255,255,139, 72, 16, /* 0x0e70 */ 133,201,116, 72, 72,131,200, 32, 49,210, 72,190, 76, 73, 78, 75, /* 0x0e80 */ 69, 68, 73, 84,131, 56, 25,117, 6, 72, 57,112, 10,116, 14,255, /* 0x0e90 */ 194,139,120, 4, 72, 1,248, 57,202,114,233,235, 31, 72,139, 88, /* 0x0ea0 */ 24, 68, 15,183, 3, 73, 1,216, 76,141, 75, 2, 68,139,115,252, /* 0x0eb0 */ 72,131,195,252, 77,133,246,116,243, 76, 41,243, 76,137,224, 72, -/* 0x0ec0 */ 131,192,240, 72,137, 4, 36, 72,141,149,208,247,255,255,185, 0, -/* 0x0ed0 */ 8, 0, 0, 72,137,223, 76,137,246,232, 31,250,255,255, 73,137, +/* 0x0ec0 */ 131,192,240, 72,137, 4, 36, 72,141,149,208,191,255,255,185, 0, +/* 0x0ed0 */ 64, 0, 0, 72,137,223, 76,137,246,232, 31,250,255,255, 73,137, /* 0x0ee0 */ 199, 72,137,223, 76,137,246,232,146, 0, 0, 0, 73, 99,197, 73, /* 0x0ef0 */ 137, 68, 36,248, 73,141,100, 36,240, 65,255,231, 49,192, 72,129, -/* 0x0f00 */ 196, 24, 8, 0, 0, 91, 65, 92, 65, 93, 65, 94, 65, 95, 93,195, +/* 0x0f00 */ 196, 24, 64, 0, 0, 91, 65, 92, 65, 93, 65, 94, 65, 95, 93,195, /* 0x0f10 */ 72,139, 15, 72, 57,209,114, 52, 72,139, 71, 8, 72,133,210,116, /* 0x0f20 */ 29, 72,137,209, 72,255,201, 68,138, 0, 72,141, 64, 1, 68,136, /* 0x0f30 */ 6, 72,141,118, 1,117,237, 72,139, 15, 72,139, 71, 8, 72, 1, diff --git a/src/stub/src/amd64-darwin.macho-upxmain.c b/src/stub/src/amd64-darwin.macho-upxmain.c index 56a89053..4d792c81 100644 --- a/src/stub/src/amd64-darwin.macho-upxmain.c +++ b/src/stub/src/amd64-darwin.macho-upxmain.c @@ -659,8 +659,7 @@ upx_main( err_exit(18); } for (;;) { // possibly 2 times for 'fat' binary - unsigned const fatmax = sizeof(Fat_header) + 10 * sizeof(Fat_arch); - if (fatmax!=pread(fdi, (void *)mhdr, fatmax, fat_offset)) { + if (sz_mhdr!=pread(fdi, (void *)mhdr, sz_mhdr, fat_offset)) { ERR_LAB err_exit(19); }