mirror of
https://github.com/upx/upx
synced 2025-09-28 19:06:07 +08:00
Detect bad e_shstrtab better.
https://github.com/upx/upx/issues/332 modified: p_lx_elf.cpp
This commit is contained in:
parent
eb90eab632
commit
1bb93d4fce
|
@ -2039,11 +2039,12 @@ bool PackLinuxElf32::canPack()
|
|||
if (sec_strndx) {
|
||||
unsigned const sh_name = get_te32(&sec_strndx->sh_name);
|
||||
if (Elf32_Shdr::SHT_STRTAB != get_te32(&sec_strndx->sh_type)
|
||||
|| (u32_t)file_size <= sh_name // FIXME: weak
|
||||
|| (u32_t)file_size <= (sizeof(".shstrtab")
|
||||
+ sh_name + (shstrtab - (const char *)&file_image[0]))
|
||||
|| (sh_name
|
||||
&& 0!=strcmp((char const *)".shstrtab", &shstrtab[sh_name]))
|
||||
) {
|
||||
throwCantPack("bad e_shstrndx");
|
||||
throwCantPack("bad e_shstrtab");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2388,11 +2389,12 @@ PackLinuxElf64::canPack()
|
|||
if (sec_strndx) {
|
||||
unsigned const sh_name = get_te32(&sec_strndx->sh_name);
|
||||
if (Elf64_Shdr::SHT_STRTAB != get_te32(&sec_strndx->sh_type)
|
||||
|| (u32_t)file_size <= sh_name // FIXME: weak
|
||||
|| (u32_t)file_size <= (sizeof(".shstrtab")
|
||||
+ sh_name + (shstrtab - (const char *)&file_image[0]))
|
||||
|| (sh_name
|
||||
&& 0!=strcmp((char const *)".shstrtab", &shstrtab[sh_name]))
|
||||
) {
|
||||
throwCantPack("bad e_shstrndx");
|
||||
throwCantPack("bad e_shstrtab");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user