From 54618064a1b116785896fbb1b836185e8b5e6fa3 Mon Sep 17 00:00:00 2001 From: John Reiser Date: Mon, 28 Mar 2011 10:14:06 -0700 Subject: [PATCH] l_info.l_lsize and .l_checksum are TargetEndian --- src/p_unix.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/p_unix.cpp b/src/p_unix.cpp index 63815621..fc846c21 100644 --- a/src/p_unix.cpp +++ b/src/p_unix.cpp @@ -231,11 +231,11 @@ PackUnix::patchLoaderChecksum() l_info *const lp = &linfo; // checksum for loader; also some PackHeader info lp->l_magic = UPX_MAGIC_LE32; // LE32 always - lp->l_lsize = (unsigned short) lsize; + set_te16(&lp->l_lsize, (unsigned short) lsize); lp->l_version = (unsigned char) ph.version; lp->l_format = (unsigned char) ph.format; // INFO: lp->l_checksum is currently unused - lp->l_checksum = upx_adler32(ptr, lsize); + set_te32(&lp->l_checksum, upx_adler32(ptr, lsize)); } void PackUnix::pack3(OutputFile *fo, Filter &/*ft*/) @@ -498,7 +498,7 @@ void PackUnix::unpackExtent(unsigned wanted, OutputFile *fo, int PackUnix::canUnpack() { - upx_byte buf[128]; + upx_byte buf[sizeof(overlay_offset) + 32]; const int bufsize = sizeof(buf); fi->seek(-bufsize, SEEK_END);