diff --git a/src/p_armpe.cpp b/src/p_armpe.cpp index 348cbdbb..d2cd8b6f 100644 --- a/src/p_armpe.cpp +++ b/src/p_armpe.cpp @@ -882,6 +882,8 @@ void PackArmPe::pack(OutputFile *fo) oh.codesize = osection[1].vsize; oh.codebase = osection[1].vaddr; oh.headersize = osection[1].rawdataptr; + if (rvamin < osection[0].rawdataptr) + throwCantPack("object alignment too small"); if (opt->win32_pe.strip_relocs && !isdll) oh.flags |= RELOCS_STRIPPED; diff --git a/src/p_w32pe.cpp b/src/p_w32pe.cpp index 29f3f44d..331a1730 100644 --- a/src/p_w32pe.cpp +++ b/src/p_w32pe.cpp @@ -1021,6 +1021,8 @@ void PackW32Pe::pack(OutputFile *fo) oh.codebase = osection[1].vaddr; // oh.headersize = osection[0].rawdataptr; oh.headersize = rvamin; + if (rvamin < osection[0].rawdataptr) + throwCantPack("object alignment too small"); if (opt->win32_pe.strip_relocs && !isdll) oh.flags |= RELOCS_STRIPPED;