From d2c36eefc945976e7d1c610b0a228e34d494c2db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Moln=C3=A1r?= Date: Fri, 23 Jun 2006 11:17:26 +0200 Subject: [PATCH] pe: fixed unpack problem in rebuildImports() --- src/p_armpe.cpp | 3 ++- src/p_w32pe.cpp | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/p_armpe.cpp b/src/p_armpe.cpp index a3ac5d5a..8e20f8a6 100644 --- a/src/p_armpe.cpp +++ b/src/p_armpe.cpp @@ -2247,6 +2247,7 @@ void PackArmPe::rebuildImports(upx_byte *& extrainfo) import_desc *im = im0; upx_byte *dllnames = Obuf + inamespos; upx_byte *importednames = dllnames + sdllnames; + upx_byte * const importednames_start = importednames; for (p = idata; get_le32(p) != 0; ++p) { @@ -2282,7 +2283,7 @@ void PackArmPe::rebuildImports(upx_byte *& extrainfo) const unsigned ilen = strlen(++p) + 1; if (inamespos) { - if (ptr_diff(importednames,oimpdlls) & 1) + if (ptr_diff(importednames, importednames_start) & 1) importednames -= 1; omemcpy(importednames + 2, p, ilen); //;;;printf(" %s",importednames+2); diff --git a/src/p_w32pe.cpp b/src/p_w32pe.cpp index e858fc0d..9e791f75 100644 --- a/src/p_w32pe.cpp +++ b/src/p_w32pe.cpp @@ -2353,6 +2353,7 @@ void PackW32Pe::rebuildImports(upx_byte *& extrainfo) import_desc *im = im0; upx_byte *dllnames = Obuf + inamespos; upx_byte *importednames = dllnames + sdllnames; + upx_byte * const importednames_start = importednames; for (p = idata; get_le32(p) != 0; ++p) { @@ -2388,8 +2389,7 @@ void PackW32Pe::rebuildImports(upx_byte *& extrainfo) const unsigned ilen = strlen(++p) + 1; if (inamespos) { - assert(oimpdlls != NULL); // FIXME - if (ptr_diff(importednames,oimpdlls) & 1) + if (ptr_diff(importednames, importednames_start) & 1) importednames -= 1; omemcpy(importednames + 2, p, ilen); //;;;printf(" %s",importednames+2);