From d9722ad6b331af37ef585dea926f1c5c1e9b626b Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Sun, 4 Mar 2007 19:27:04 +0100 Subject: [PATCH] dos/exe: make sure minsp is even. --- src/p_exe.cpp | 13 +++++++++---- src/version.h | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/p_exe.cpp b/src/p_exe.cpp index 286011d6..d1700882 100644 --- a/src/p_exe.cpp +++ b/src/p_exe.cpp @@ -92,9 +92,13 @@ int PackExe::fillExeHeader(struct exe_header_t *eh) const unsigned minsp = 0x200; if (M_IS_LZMA(ph.method)) minsp = stack_for_lzma; + minsp = ALIGN_UP(minsp, 16u); assert(minsp < 0xff00); - - oh.sp = ih.sp > minsp ? (unsigned) ih.sp : minsp; + if (oh.sp > minsp) + minsp = oh.sp; + if (minsp < 0xff00 - 2) + minsp = ALIGN_UP(minsp, 2u); + oh.sp = minsp; unsigned destpara = (ph.u_len + ph.overlap_overhead - ph.c_len + 31) / 16; oh.ss = ph.c_len/16 + destpara; @@ -148,8 +152,9 @@ void PackExe::addLoaderEpilogue(int flag) void PackExe::buildLoader(const Filter *) { - exe_header_t tmp_oh; - int flag = fillExeHeader(&tmp_oh); + // get flag + exe_header_t dummy_oh; + int flag = fillExeHeader(&dummy_oh); initLoader(stub_i086_dos16_exe, sizeof(stub_i086_dos16_exe)); diff --git a/src/version.h b/src/version.h index 3aa43e38..8423768c 100644 --- a/src/version.h +++ b/src/version.h @@ -2,5 +2,5 @@ #define UPX_VERSION_STRING "2.93 beta" #define UPX_VERSION_STRING4 "2.93" #define UPX_VERSION_DATE "Mar 8th 2007" -#define UPX_VERSION_DATE_ISO "2007-03-10" +#define UPX_VERSION_DATE_ISO "2007-03-08" #define UPX_VERSION_YEAR "2007"