From 056865f59a0a04e4fe180deb562c4424fefc0bd5 Mon Sep 17 00:00:00 2001 From: John Reiser Date: Tue, 4 Jun 2024 08:55:46 -0700 Subject: [PATCH] Detect bad placement of LINK segment https://github.com/upx/upx/issues/827 modified: p_mach.cpp --- src/p_mach.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/p_mach.cpp b/src/p_mach.cpp index a26ac67a..3a66c617 100644 --- a/src/p_mach.cpp +++ b/src/p_mach.cpp @@ -1754,6 +1754,10 @@ tribool PackMachBase::canUnpack() else { // PackHeader follows loader at __LINKEDIT if ((off_t)bufsize > (fi->st_size() - offLINK)) { bufsize = fi->st_size() - offLINK; + if (bufsize < sizeof(struct b_info)) { + throwCantUnpack("bad offLINK %p %p", + (void *)offLINK, (void *)file_size); + } } fi->seek(offLINK, SEEK_SET); }