PE: fix SizeOfHeaders value of Optional Header field

This commit is contained in:
bitraid 2021-03-25 21:41:49 +02:00 committed by Markus F.X.J. Oberhumer
parent 78f48d65d5
commit 1518e5bc98
4 changed files with 3 additions and 12 deletions

View File

@ -278,8 +278,7 @@ void PackW32Pe::setOhDataBase(const pe_section_t *osection)
void PackW32Pe::setOhHeaderSize(const pe_section_t *osection)
{
(void)osection;
oh.headersize = rvamin; // FIXME
oh.headersize = ALIGN_UP(pe_offset + sizeof(oh) + sizeof(osection) * oh.objects, oh.filealign);
}
void PackW32Pe::pack(OutputFile *fo)

View File

@ -266,12 +266,6 @@ void PackW64Pep::defineSymbols(unsigned ncsection, unsigned upxsection,
linker->defineSymbol("START", upxsection);
}
void PackW64Pep::setOhHeaderSize(const pe_section_t *osection)
{
(void)osection;
oh.headersize = rvamin; // FIXME
}
void PackW64Pep::pack(OutputFile *fo)
{
// FIXME: Relocation stripping disabled for now - Stefan Widmann

View File

@ -51,7 +51,7 @@ public:
unsigned sizeof_oh, unsigned isize_isplit,
unsigned s1addr);
virtual void setOhDataBase(const pe_section_t *) {}
virtual void setOhHeaderSize(const pe_section_t *osection);
virtual void setOhHeaderSize(const pe_section_t *) {}
virtual void pack(OutputFile *fo);
virtual bool canPack();

View File

@ -2997,9 +2997,7 @@ void PeFile::unpack0(OutputFile *fo, const ht &ih, ht &oh,
ODADDR(PEDIR_BOUNDIM) = 0;
ODSIZE(PEDIR_BOUNDIM) = 0;
// oh.headersize = osection[0].rawdataptr;
// oh.headersize = ALIGN_UP(pe_offset + sizeof(oh) + sizeof(pe_section_t) * objs, oh.filealign);
oh.headersize = rvamin;
setOhHeaderSize(osection);
oh.chksum = 0;
// write decompressed file