Merge branch 'devel' into jreiser-macho2
This commit is contained in:
+14
-2
@@ -4656,7 +4656,13 @@ void PackLinuxElf64::unpack(OutputFile *fo)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (is_shlib
|
||||
if (0x1000==get_te64(&phdri[0].p_filesz) // detect C_BASE style
|
||||
&& 0==get_te64(&phdri[1].p_offset)
|
||||
&& 0==get_te64(&phdri[0].p_offset)
|
||||
&& get_te64(&phdri[1].p_filesz) == get_te64(&phdri[1].p_memsz)) {
|
||||
fi->seek(up4(get_te64(&phdr[1].p_memsz)), SEEK_SET); // past the loader
|
||||
}
|
||||
else if (is_shlib
|
||||
|| ((unsigned)(get_te64(&ehdri.e_entry) - load_va) + up4(lsize) +
|
||||
ph.getPackHeaderSize() + sizeof(overlay_offset))
|
||||
< up4(file_size)) {
|
||||
@@ -5708,7 +5714,13 @@ void PackLinuxElf32::unpack(OutputFile *fo)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (is_shlib
|
||||
if (0x1000==get_te32(&phdri[0].p_filesz) // detect C_BASE style
|
||||
&& 0==get_te32(&phdri[1].p_offset)
|
||||
&& 0==get_te32(&phdri[0].p_offset)
|
||||
&& get_te32(&phdri[1].p_filesz) == get_te32(&phdri[1].p_memsz)) {
|
||||
fi->seek(up4(get_te32(&phdr[1].p_memsz)), SEEK_SET); // past the loader
|
||||
}
|
||||
else if (is_shlib
|
||||
|| ((unsigned)(get_te32(&ehdri.e_entry) - load_va) + up4(lsize) +
|
||||
ph.getPackHeaderSize() + sizeof(overlay_offset))
|
||||
< up4(file_size)) {
|
||||
|
||||
+1
-1
@@ -1397,7 +1397,7 @@ void PackMachBase<T>::unpack(OutputFile *fo)
|
||||
fi->readx(&hbuf, sizeof(hbuf));
|
||||
unsigned const orig_file_size = get_te32(&hbuf.p_filesize);
|
||||
blocksize = get_te32(&hbuf.p_blocksize); // emacs-21.2.1 was 0x01d47e6c (== 30703212)
|
||||
if (blocksize > orig_file_size || blocksize > 0x05000000)
|
||||
if (blocksize > orig_file_size || blocksize > UPX_RSIZE_MAX_MEM)
|
||||
throwCantUnpack("file header corrupted");
|
||||
if (file_size > (off_t)orig_file_size) {
|
||||
opt->info_mode += !opt->info_mode ? 1 : 0; // make visible
|
||||
|
||||
Reference in New Issue
Block a user