Markus F.X.J. Oberhumer
a7fa2f87c5
cmake update
2024-07-17 12:06:41 +02:00
Markus F.X.J. Oberhumer
3a11a5a82e
CI updates
2024-07-13 12:49:02 +02:00
John Reiser
08a38af553
Workaround bug in Alpine Linux
...
"empty" DT_GNU_HASH lacked hasharr[0] when n_bucket==1,
which upx correctly detected as malformed.
modified: p_lx_elf.cpp
2024-07-02 11:24:27 -07:00
Markus F.X.J. Oberhumer
043a54cf3e
all: minor cleanups
2024-07-10 10:34:58 +02:00
Markus F.X.J. Oberhumer
16c8f6d160
src: portability updates
2024-07-07 14:50:27 +02:00
Markus F.X.J. Oberhumer
a77adcd4c7
src: new ACC version
2024-07-01 18:25:54 +02:00
John Reiser
cebd4392f2
Fix checksum error de-compressing ELF with large .p_align and small blocksize
...
https://github.com/upx/upx/issues/836
modified: p_unix.cpp
2024-07-05 19:06:14 -07:00
John Reiser
64a3de5a7a
FIX PT_GNU_HASH when "empty"
...
... such as a main program with no exported globals
https://github.com/upx/upx/issues/834
modified: p_lx_elf.cpp
2024-06-28 09:04:05 -07:00
Markus F.X.J. Oberhumer
261609f706
CI updates
2024-06-26 11:45:35 +02:00
Markus F.X.J. Oberhumer
17cf73001c
CI updates
2024-06-21 18:19:59 +02:00
Markus F.X.J. Oberhumer
ad566d793a
CI updates
2024-06-20 10:49:09 +02:00
Markus F.X.J. Oberhumer
b499ed3d20
CI updates
2024-06-19 00:20:35 +02:00
John Reiser
de8de9c0f0
Option --unmap-all-pages completely avoids /proc/self/exe
...
https://github.com/upx/upx/issues/749
2024-06-18 10:18:32 -07:00
Markus F.X.J. Oberhumer
dcd8dfd5fc
CI: add zigcc linux-mips soft-float targets
2024-06-17 10:28:53 +02:00
Markus F.X.J. Oberhumer
78f3b6297c
src/pefile.cpp: default to strict reloc checks
2024-06-17 09:35:31 +02:00
John Reiser
1b6c120864
64-bit phdrx[], PT_NOTE, PT_GNU_STACK
...
modified: p_lx_elf.cpp
modified: p_lx_elf.h
2024-06-13 15:32:51 -07:00
John Reiser
99afc50ebf
PT_MIPS_ABIFLAGS, PT_MIPS_REGINFO
...
Also re-org of PT_HOTE and other non-PT_LOAD Elf32_Phdrs
modified: p_lx_elf.cpp
modified: p_lx_elf.h
2024-06-13 09:58:20 -07:00
John Reiser
3286f7c5ba
De-compression of PT_MIPS_ABIFLAGS
...
modified: p_lx_elf.cpp
2024-06-11 20:03:44 -07:00
John Reiser
72ccca9faf
PT_MIPS_ABIFLAGS, compression side only, 32-bit only
...
modified: p_elf_enum.h
modified: p_lx_elf.cpp
modified: p_lx_elf.h
2024-06-11 15:02:13 -07:00
Markus F.X.J. Oberhumer
3c294d9721
all: minor cleanups
2024-06-14 15:15:55 +02:00
Markus F.X.J. Oberhumer
1aff5f5bb7
all: misc cleanups
2024-06-07 22:29:57 +02:00
John Reiser
937ae4c5e0
Avoid crash on outrageous fuzzed input
...
https://github.com/upx/upx/issues/828
modified: p_lx_elf.cpp
2024-06-04 15:43:11 -07:00
John Reiser
056865f59a
Detect bad placement of LINK segment
...
https://github.com/upx/upx/issues/827
modified: p_mach.cpp
2024-06-04 08:55:46 -07:00
John Reiser
c58246b43c
Detect compressed length too short
...
https://github.com/upx/upx/issues/827
modified: p_unix.cpp
2024-06-04 08:32:26 -07:00
Markus F.X.J. Oberhumer
3495d1affd
all: minor cleanups
2024-05-28 10:26:39 +02:00
Markus F.X.J. Oberhumer
b0ce072370
src: fix compilation on older compilers; update tests
2024-05-27 20:59:12 +02:00
Markus F.X.J. Oberhumer
9f4d18baac
src: yet more constexpr updates
2024-05-27 07:03:03 +02:00
Markus F.X.J. Oberhumer
f65c8f8c6f
src: more work on constexpr
2024-05-26 18:22:29 +02:00
Markus F.X.J. Oberhumer
e0633b89bb
CI updates
2024-05-26 12:36:41 +02:00
Markus F.X.J. Oberhumer
c3341ce4dc
src: add support for constexpr bele.h
2024-05-26 02:27:51 +02:00
Markus F.X.J. Oberhumer
344246725b
src: more upx::max cleanups
2024-05-22 09:49:20 +02:00
John Reiser
57763ca1e2
ELF stubs: go_lang different placement of DT_STRTAB, DT_SYMTAB
...
https://github.com/upx/upx/issues/825
modified: p_lx_elf.cpp
2024-05-21 17:14:21 -07:00
Markus F.X.J. Oberhumer
40b7e24fcc
src: introduce upx::max and friends; updates for clang-19 git snapshot
2024-05-15 14:06:05 +02:00
Markus F.X.J. Oberhumer
33f4f3a5a1
all: minor clang-tidy cleanups
2024-05-12 08:35:04 +02:00
Markus F.X.J. Oberhumer
ed3d7b0c45
all: minor cleanups
2024-05-11 22:07:08 +02:00
Markus F.X.J. Oberhumer
cba44c45fc
src: introduce ptr_get_address()
2024-05-11 17:37:15 +02:00
Markus F.X.J. Oberhumer
7b0a79dec5
all: update LZMA SDK license information
...
The LZMA SDK was placed in the public domain as of
version 4.62 (December 2008).
https://www.7-zip.org/sdk.html
And according to https://sourceforge.net/p/sevenzip/discussion/45797/thread/685169cf/
"Are older LZMA versions in the public domain?"
"Yes, you can use old versions of LZMA SDK as public domain."
-- Igor Pavlov, 2011-06-21
2024-05-11 12:52:26 +02:00
Markus F.X.J. Oberhumer
7081c57571
all: post-release version bump
2024-05-09 12:44:51 +02:00
Markus F.X.J. Oberhumer
3757579ffc
all: prepare for release
2024-05-09 12:03:12 +02:00
Markus F.X.J. Oberhumer
c04c685469
src: restrict upx::atomic_exchange to pointer-size for now
2024-05-08 23:08:33 +02:00
Markus F.X.J. Oberhumer
72c9769953
src: avoid warnings when compiling with llvm-mingw-nightly
2024-05-08 22:22:13 +02:00
Markus F.X.J. Oberhumer
42759b94bd
all: more clang-tidy cleanups
2024-05-08 15:12:57 +02:00
Markus F.X.J. Oberhumer
0f3939df15
src: pacify clang-tidy
2024-05-07 14:46:02 +02:00
RainRat
62265a1bc9
fix typos
2024-05-07 01:41:41 -07:00
Markus F.X.J. Oberhumer
76b2cec8ee
src: fix compilation with clang
2024-05-07 12:33:55 +02:00
Markus F.X.J. Oberhumer
3d82f0cfe1
src: introduce upx::atomic_exchange; cleanups
2024-05-07 10:05:44 +02:00
John Reiser
e5546bc8b0
32-bit ELF escape hatch when no fit on last executable page
...
... about 1/1000 (4/PAGE_SIZE) chance
modified: src/stub/src/i386-linux.elf-main.c
modified: misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
plus all 32-bit elf-fold.h, elf-fold.map
2024-05-06 09:42:13 -07:00
Markus F.X.J. Oberhumer
6fc0a00ac8
all: update for clang-tidy-18
2024-05-06 05:40:22 +02:00
John Reiser
4c32a8e3d4
Fix attempted recovery from corrupted b_info
...
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66271&q=label%3AProj-upx
modified: p_lx_elf.cpp
2024-05-04 10:35:39 -07:00
John Reiser
2ea316d754
Detect sizeofcmds too small
...
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66330&q=label%3AProj-upx
modified: p_mach.cpp
2024-05-04 10:10:37 -07:00
John Reiser
548227a55b
mb_dt_offsets.clear() prevents undef from corrupted input
...
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66344&q=label%3AProj-upx
modified: p_lx_elf.cpp
2024-05-04 09:56:34 -07:00
John Reiser
a831a20910
unpackExtent detects corrupted compression method
...
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66338&q=label%3AProj-upx
modified: p_unix.cpp
2024-05-04 09:43:47 -07:00
John Reiser
811f66de84
Check gnu_shift during unpack
...
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66273&q=label%3AProj-upx
modified: p_lx_elf.cpp
2024-05-04 09:05:48 -07:00
Markus F.X.J. Oberhumer
a87fd56b3e
all: update version
2024-05-02 18:51:55 +02:00
Markus F.X.J. Oberhumer
f0cb30e2b9
all: minor cleanups
2024-05-02 18:50:23 +02:00
Markus F.X.J. Oberhumer
038743c694
CI updates
2024-05-02 03:21:27 +02:00
John Reiser
0e6cef99a0
Guard against empty PT_NOTE
...
https://github.com/upx/upx/issues/817
modified: p_lx_elf.cpp
2024-05-01 10:09:52 -07:00
John Reiser
92c925fe95
New i386/lzma-multi_d.S enables unpacking more than one block
...
Used by p_lx_exe.cpp; others keep old i386/lzma_d.S
which allows only one block, but avoids trouble with
anti-virus utilities for some OS.
modified: misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
new file: src/stub/src/arch/i386/lzma-multi_d.S
modified: src/stub/src/arch/i386/lzma_d.S
modified: src/stub/src/i386-bsd.elf.execve-entry.S
modified: src/stub/src/i386-linux.elf.execve-entry.S
plus stub/*.h, *.dump
Notable:
modified: src/stub/i386-dos32.djgpp2.h
modified: src/stub/i386-dos32.tmt.h
modified: src/stub/i386-dos32.watcom.le.h
modified: src/stub/i386-win32.pe.h
2024-05-01 10:09:52 -07:00
John Reiser
4562d5459d
Some non-ELF --lzma stubs assumed only one block, and <= 0.5MiB
...
Fixed for p_lx_exc.cpp; others remain a mystery.
https://github.com/upx/upx/issues/816
2024-05-01 10:09:52 -07:00
Markus F.X.J. Oberhumer
8393ded1b3
CI updates
2024-05-01 13:11:12 +02:00
Markus F.X.J. Oberhumer
157a63a023
CI updates
2024-04-28 22:18:47 +02:00
John Reiser
80e22a7e38
Fix --preserve-build-id
...
https://github.com/upx/upx/issues/815
modified: p_lx_elf.cpp
2024-04-27 08:21:48 -07:00
Markus F.X.J. Oberhumer
ddf2da3d76
cmake: run tests in parallel; misc/podman: add 30-rebuild-stubs.sh
2024-04-26 10:36:01 +02:00
Markus F.X.J. Oberhumer
a7592b2ca2
all: enhance tests
2024-04-25 03:19:59 +02:00
John Reiser
265c100845
PowerPC64 nrv2d decompressor
...
https://github.com/upx/upx/issues/813
modified: misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
modified: src/stub/src/arch/powerpc/64le/nrv2d_d.S
modified: src/stub/powerpc64-darwin.dylib-entry.h
modified: src/stub/powerpc64-darwin.macho-entry.h
modified: src/stub/powerpc64-linux.elf-entry.h
modified: src/stub/powerpc64le-linux.elf-entry.h
modified: src/stub/powerpc64le-linux.kernel.vmlinux.h
2024-04-24 14:37:09 -07:00
John Reiser
84e8288f61
Propagate yesterday's fix to stub decoding on PowerPC
...
https://github.com/upx/upx/issues/813
modified: misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
modified: src/stub/src/arch/powerpc/32/nrv2d_d.S
modified: src/stub/src/arch/powerpc/32/nrv2e_d.S
modified: src/stub/src/arch/powerpc/64le/nrv2b_d.S
modified: src/stub/src/arch/powerpc/64le/nrv2d_d.S
modified: src/stub/powerpc-darwin.dylib-entry.h
modified: src/stub/powerpc-darwin.macho-entry.h
modified: src/stub/powerpc-linux.elf-entry.h
modified: src/stub/powerpc-linux.kernel.vmlinux.h
modified: src/stub/powerpc64-darwin.dylib-entry.h
modified: src/stub/powerpc64-darwin.macho-entry.h
modified: src/stub/powerpc64-linux.elf-entry.h
modified: src/stub/powerpc64le-linux.elf-entry.h
modified: src/stub/powerpc64le-linux.kernel.vmlinux.h
modified: src/stub/tmp/powerpc-darwin.dylib-entry.bin.dump
modified: src/stub/tmp/powerpc-darwin.macho-entry.bin.dump
modified: src/stub/tmp/powerpc-linux.elf-entry.bin.dump
modified: src/stub/tmp/powerpc-linux.kernel.vmlinux.bin.dump
modified: src/stub/tmp/powerpc64-darwin.dylib-entry.bin.dump
modified: src/stub/tmp/powerpc64-darwin.macho-entry.bin.dump
modified: src/stub/tmp/powerpc64-linux.elf-entry.bin.dump
modified: src/stub/tmp/powerpc64le-linux.elf-entry.bin.dump
modified: src/stub/tmp/powerpc64le-linux.kernel.vmlinux.bin.dump
2024-04-24 10:36:55 -07:00
Markus F.X.J. Oberhumer
c69b4561fb
src: initialize some fields to suppress harmless valgrind errors
2024-04-24 12:36:22 +02:00
John Reiser
6db0af8d04
PowerPC cannot branch on CArry; requires contortions
...
https://github.com/upx/upx/issues/813
modified: src/stub/src/arch/powerpc/32/nrv2b_d.S
modified: misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
modified: src/stub/powerpc-darwin.dylib-entry.h
modified: src/stub/powerpc-darwin.macho-entry.h
modified: src/stub/powerpc-linux.elf-entry.h
modified: src/stub/powerpc-linux.kernel.vmlinux.h
modified: src/stub/src/i386-linux.elf-main.c
modified: src/stub/tmp/powerpc-darwin.dylib-entry.bin.dump
modified: src/stub/tmp/powerpc-darwin.macho-entry.bin.dump
modified: src/stub/tmp/powerpc-linux.elf-entry.bin.dump
modified: src/stub/tmp/powerpc-linux.kernel.vmlinux.bin.dump
2024-04-23 17:40:07 -07:00
John Reiser
9fb64ded10
Syscall on powerpc linux wipes arg registers, unlike x86_64
...
Also squeaky-clean 'get_page_mask' for I/D cache consistency.
https://github.com/upx/upx/issues/813
modified: stub/powerpc-linux.elf-entry.h
modified: stub/powerpc-linux.elf-fold.h
modified: stub/src/powerpc-linux.elf-entry.S
modified: stub/src/powerpc-linux.elf-fold.S
modified: stub/tmp/powerpc-linux.elf-entry.bin.dump
modified: stub/tmp/powerpc-linux.elf-fold.map
2024-04-21 19:46:05 -07:00
Markus F.X.J. Oberhumer
9d26713b1a
Add experimental (and undocumented) --help-verbose and --help-short options.
2024-04-21 14:20:18 +02:00
Markus F.X.J. Oberhumer
eb3c55b5cb
all: add more tests
2024-04-21 12:17:38 +02:00
Markus F.X.J. Oberhumer
896596f672
cmake update
2024-04-20 21:08:09 +02:00
Markus F.X.J. Oberhumer
e4de14612f
CI updates
2024-04-20 12:29:32 +02:00
Markus F.X.J. Oberhumer
1d2b276425
all: improve tests
2024-04-16 15:20:56 +02:00
Markus F.X.J. Oberhumer
35c6a200ad
CI updates
2024-04-14 02:15:26 +02:00
Markus F.X.J. Oberhumer
90a7faa15e
CI updates
2024-04-10 10:52:48 +02:00
John Reiser
91f5fe1c0e
arm64 --nrv2d instruction confusion
...
https://github.com/upx/upx/issues/806
ARM Architecture Reference Manual
ARMv8, for ARMv8-A architecture profile
Section C6.2.47, page C6-595 (note the 'invert'!)
CINC <Wd>, <Wn>, <cond>
is equivalent to
CSINC <Wd>, <Wn>, <Wn>, invert(<cond>)
modified: src/stub/src/arch/arm64/v8/nrv2d_d32.S
modified: misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
modified: src/stub/arm64-darwin.macho-entry.h
modified: src/stub/arm64-linux.elf-entry.h
modified: src/stub/arm64-linux.elf-so_fold.h
modified: src/stub/arm64-linux.shlib-init.h
modified: src/stub/arm64-win64.pe.h
2024-04-07 14:01:19 -07:00
John Reiser
bb816f0c74
arm64 --nrv2d preserve sign when decoding offset
...
https://github.com/upx/upx/issues/806
modified: src/stub/arm64-darwin.macho-entry.h
modified: src/stub/arm64-linux.elf-entry.h
modified: src/stub/arm64-linux.elf-so_fold.h
modified: src/stub/arm64-linux.shlib-init.h
modified: src/stub/arm64-win64.pe.h
modified: src/stub/src/arch/arm64/v8/nrv2d_d32.S
2024-04-06 16:16:28 -07:00
John Reiser
93abe97ea5
powerpc64le --nrv2d register conflict
...
modified: stub/powerpc64-darwin.dylib-entry.h
modified: stub/powerpc64-darwin.macho-entry.h
modified: stub/powerpc64-linux.elf-entry.h
modified: stub/powerpc64le-linux.elf-entry.h
modified: stub/powerpc64le-linux.kernel.vmlinux.h
modified: stub/src/arch/powerpc/64le/nrv2d_d.S
modified: stub/src/arch/powerpc/64le/nrv2e_d.S
https://github.com/upx/upx/issues/806
2024-04-06 16:16:28 -07:00
Markus F.X.J. Oberhumer
97cf29ffbb
all: enhance CMake tests; assorted updates
2024-04-06 15:47:46 +02:00
Markus F.X.J. Oberhumer
0f9315383c
cmake: only enable UBSAN for clang versions >= 9
2024-04-02 09:21:56 +02:00
Markus F.X.J. Oberhumer
3538d796a7
CI updates
2024-04-02 08:05:43 +02:00
Markus F.X.J. Oberhumer
24f3824524
CI updates and minor cleanups
2024-04-01 20:31:05 +02:00
Markus F.X.J. Oberhumer
70b20d7d89
CI updates
2024-03-29 12:11:41 +01:00
Markus F.X.J. Oberhumer
7b21a0620b
CI updates
2024-03-28 20:21:11 +01:00
John Reiser
3949af6d3c
Unpacking detects and defends against malicious ELF
2024-03-28 07:48:55 -07:00
Markus F.X.J. Oberhumer
6e644fa480
all: post-release version bump
2024-03-28 19:47:04 +01:00
Markus F.X.J. Oberhumer
5bef968068
all: prepare for release
2024-03-27 13:57:30 +01:00
Markus F.X.J. Oberhumer
3ba91b8072
cmake update
2024-03-26 15:38:20 +01:00
Markus F.X.J. Oberhumer
a27a9e6000
all: and yet more cleanups; NFCI
2024-03-25 11:07:40 +01:00
Markus F.X.J. Oberhumer
7e839e6962
all: more cleanups; NFCI
2024-03-23 20:18:28 +01:00
Markus F.X.J. Oberhumer
9b80628f84
src/pefile.cpp: support relocs of large files
...
Use 5-byte entries instead of 4-byte entries to fully preserve "pos".
And add some symbolic constants.
Partially based on a patch by John.
2024-03-22 00:46:17 +01:00
Markus F.X.J. Oberhumer
a21a006fe9
all: yet more minor cleanups
2024-03-19 16:03:37 +01:00
Markus F.X.J. Oberhumer
54d16a458a
CI updates; cleanups
2024-03-16 17:46:40 +01:00
Markus F.X.J. Oberhumer
e3d24238e4
all: update version
2024-03-12 18:12:43 +01:00
Markus F.X.J. Oberhumer
56e7b36959
src: new ACC version
2024-03-12 18:11:46 +01:00
Markus F.X.J. Oberhumer
f29791470f
all: yet more cleanups
2024-03-10 16:23:06 +01:00
Markus F.X.J. Oberhumer
52d9b53b74
all: minor cleanups
2024-03-08 11:52:44 +01:00
Markus F.X.J. Oberhumer
839a78f2e0
Better fix for previous commit to avoid out-of-bounds pointer.
2024-02-27 11:20:29 +01:00
John Reiser
680ce0a7af
find_dt_ndx defends against overrun
...
https://github.com/upx/upx/issues/790
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66344&q=label%3AProj-upx
modified: p_lx_elf.cpp
2024-02-26 14:32:02 -08:00