check_pt_dynamic() checks PT_DYNAMIC.p_memsz

https://github.com/upx/upx/issues/368
	modified:   p_lx_elf.cpp
This commit is contained in:
John Reiser 2020-04-15 14:24:05 -07:00 committed by Markus F.X.J. Oberhumer
parent 58c6d19f7c
commit 4cb4bd38eb

View File

@ -4970,6 +4970,7 @@ PackLinuxElf32::check_pt_dynamic(Elf32_Phdr const *const phdr)
if (s < t || (u32_t)file_size < s
|| (3 & t) || (7 & (filesz | memsz)) // .balign 4; 8==sizeof(Elf32_Dyn)
|| (-1+ align) & (t ^ vaddr)
|| (unsigned long)file_size <= memsz
|| filesz < sizeof(Elf32_Dyn)
|| memsz < sizeof(Elf32_Dyn)
|| filesz < memsz) {
@ -5071,6 +5072,7 @@ PackLinuxElf64::check_pt_dynamic(Elf64_Phdr const *const phdr)
if (s < t || (upx_uint64_t)file_size < s
|| (7 & t) || (0xf & (filesz | memsz)) // .balign 8; 16==sizeof(Elf64_Dyn)
|| (-1+ align) & (t ^ vaddr)
|| (unsigned long)file_size <= memsz
|| filesz < sizeof(Elf64_Dyn)
|| memsz < sizeof(Elf64_Dyn)
|| filesz < memsz) {