mirror of
https://github.com/upx/upx
synced 2025-10-26 23:36:41 +08:00
Unpack: Phdrs must be within expansion of first compressed block
https://github.com/upx/upx/issues/388 modified: p_lx_elf.cpp
This commit is contained in:
committed by
Markus F.X.J. Oberhumer
parent
527139978a
commit
0016512df1
@@ -4550,7 +4550,7 @@ void PackLinuxElf64::unpack(OutputFile *fo)
|
||||
unsigned c_adler = upx_adler32(NULL, 0);
|
||||
unsigned u_adler = upx_adler32(NULL, 0);
|
||||
#define MAX_ELF_HDR 1024
|
||||
if ((MAX_ELF_HDR - sizeof(Elf64_Ehdr))/sizeof(Elf64_Phdr) < u_phnum) {
|
||||
if ((umin64(MAX_ELF_HDR, ph.u_len) - sizeof(Elf64_Ehdr))/sizeof(Elf64_Phdr) < u_phnum) {
|
||||
throwCantUnpack("bad compressed e_phnum");
|
||||
}
|
||||
#undef MAX_ELF_HDR
|
||||
@@ -5617,7 +5617,7 @@ void PackLinuxElf32::unpack(OutputFile *fo)
|
||||
unsigned c_adler = upx_adler32(NULL, 0);
|
||||
unsigned u_adler = upx_adler32(NULL, 0);
|
||||
#define MAX_ELF_HDR 512
|
||||
if ((MAX_ELF_HDR - sizeof(Elf32_Ehdr))/sizeof(Elf32_Phdr) < u_phnum) {
|
||||
if ((umin(MAX_ELF_HDR, ph.u_len) - sizeof(Elf32_Ehdr))/sizeof(Elf32_Phdr) < u_phnum) {
|
||||
throwCantUnpack("bad compressed e_phnum");
|
||||
}
|
||||
#undef MAX_ELF_HDR
|
||||
|
||||
Reference in New Issue
Block a user