From e0bf4609938b0b4d2e83469fac00206a771429e5 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Fri, 28 Oct 2022 10:34:31 +0200 Subject: [PATCH] src: rename membuffer "Uncompression" to "Decompression" --- src/compress_ucl.cpp | 6 +++++- src/compress_zlib.cpp | 6 +++++- src/p_com.cpp | 2 +- src/p_djgpp2.cpp | 2 +- src/p_exe.cpp | 2 +- src/p_ps1.cpp | 4 ++-- src/p_tmt.cpp | 2 +- src/p_tos.cpp | 2 +- src/p_vmlinx.cpp | 6 +++--- src/p_vmlinz.cpp | 4 ++-- src/p_wcle.cpp | 2 +- src/pefile.cpp | 2 +- src/util/membuffer.cpp | 6 +++--- src/util/membuffer.h | 4 ++-- 14 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/compress_ucl.cpp b/src/compress_ucl.cpp index b95d390d..c669c35f 100644 --- a/src/compress_ucl.cpp +++ b/src/compress_ucl.cpp @@ -305,7 +305,7 @@ static bool check_ucl(const int method, const unsigned expected_c_len) { u_buf.alloc(u_len); memset(u_buf, 0, u_len); c_buf.allocForCompression(u_len, c_extra); - d_buf.allocForUncompression(u_len); + d_buf.allocForDecompression(u_len); c_len = c_buf.getSize() - c_extra; r = upx_ucl_compress(u_buf, u_len, c_buf + c_extra, &c_len, nullptr, method, level, NULL_cconf, &cresult); @@ -316,6 +316,10 @@ static bool check_ucl(const int method, const unsigned expected_c_len) { if (r != 0 || d_len != u_len) return false; if (memcmp(u_buf, d_buf, u_len) != 0) return false; + d_len = u_len - 1; + r = upx_ucl_decompress(c_buf + c_extra, c_len, d_buf, &d_len, method, nullptr); + if (r == 0) return false; + // TODO: rewrite Packer::findOverlapOverhead() so that we can test it here //unsigned x_len = d_len; //r = upx_ucl_test_overlap(c_buf, u_buf, c_extra, c_len, &x_len, method, nullptr); diff --git a/src/compress_zlib.cpp b/src/compress_zlib.cpp index d27067f5..4ce3a11b 100644 --- a/src/compress_zlib.cpp +++ b/src/compress_zlib.cpp @@ -262,7 +262,7 @@ static bool check_zlib(const int method, const int level, const unsigned expecte u_buf.alloc(u_len); memset(u_buf, 0, u_len); c_buf.allocForCompression(u_len, c_extra); - d_buf.allocForUncompression(u_len); + d_buf.allocForDecompression(u_len); c_len = c_buf.getSize() - c_extra; r = upx_zlib_compress(u_buf, u_len, c_buf + c_extra, &c_len, nullptr, method, level, NULL_cconf, &cresult); @@ -273,6 +273,10 @@ static bool check_zlib(const int method, const int level, const unsigned expecte if (r != 0 || d_len != u_len) return false; if (memcmp(u_buf, d_buf, u_len) != 0) return false; + d_len = u_len - 1; + r = upx_zlib_decompress(c_buf + c_extra, c_len, d_buf, &d_len, method, nullptr); + if (r == 0) return false; + // TODO: rewrite Packer::findOverlapOverhead() so that we can test it here //unsigned x_len = d_len; //r = upx_zlib_test_overlap(c_buf, u_buf, c_extra, c_len, &x_len, method, nullptr); diff --git a/src/p_com.cpp b/src/p_com.cpp index 0878b486..f6bcc5db 100644 --- a/src/p_com.cpp +++ b/src/p_com.cpp @@ -236,7 +236,7 @@ int PackCom::canUnpack() void PackCom::unpack(OutputFile *fo) { ibuf.alloc(file_size); - obuf.allocForUncompression(ph.u_len); + obuf.allocForDecompression(ph.u_len); // read whole file fi->seek(0,SEEK_SET); diff --git a/src/p_djgpp2.cpp b/src/p_djgpp2.cpp index a0ac498c..d51db076 100644 --- a/src/p_djgpp2.cpp +++ b/src/p_djgpp2.cpp @@ -416,7 +416,7 @@ void PackDjgpp2::unpack(OutputFile *fo) handleStub(fo); ibuf.alloc(ph.c_len); - obuf.allocForUncompression(ph.u_len); + obuf.allocForDecompression(ph.u_len); fi->seek(coff_offset + ph.buf_offset + ph.getPackHeaderSize(), SEEK_SET); fi->readx(ibuf, ph.c_len); diff --git a/src/p_exe.cpp b/src/p_exe.cpp index 9b85dd41..464db42d 100644 --- a/src/p_exe.cpp +++ b/src/p_exe.cpp @@ -689,7 +689,7 @@ int PackExe::canUnpack() void PackExe::unpack(OutputFile *fo) { ibuf.alloc(file_size); - obuf.allocForUncompression(ph.u_len); + obuf.allocForDecompression(ph.u_len); // read the file fi->seek(ih.headsize16*16,SEEK_SET); diff --git a/src/p_ps1.cpp b/src/p_ps1.cpp index 9063587a..0edc28d5 100644 --- a/src/p_ps1.cpp +++ b/src/p_ps1.cpp @@ -189,7 +189,7 @@ bool PackPs1::getBkupHeader(unsigned char *p, unsigned char *dst) if (src && (src->id == '1' && src->len < SZ_IH_BKUP) && dst) { - unsigned char *unc_bh = New(unsigned char, MemBuffer::getSizeForUncompression(SZ_IH_BKUP)); + unsigned char *unc_bh = New(unsigned char, MemBuffer::getSizeForDecompression(SZ_IH_BKUP)); unsigned sz_bh = SZ_IH_BKUP; int r = upx_decompress((const unsigned char *)&src->ih_bkup, src->len, @@ -716,7 +716,7 @@ void PackPs1::unpack(OutputFile *fo) const unsigned pad = oh.tx_len - ph.u_len; ibuf.alloc(fdata_size > PS_HDR_SIZE ? fdata_size : PS_HDR_SIZE); - obuf.allocForUncompression(ph.u_len, pad); + obuf.allocForDecompression(ph.u_len, pad); fi->seek(PS_HDR_SIZE, SEEK_SET); fi->readx(ibuf, fdata_size); diff --git a/src/p_tmt.cpp b/src/p_tmt.cpp index 0559bddf..8846efc9 100644 --- a/src/p_tmt.cpp +++ b/src/p_tmt.cpp @@ -320,7 +320,7 @@ void PackTmt::unpack(OutputFile *fo) Packer::handleStub(fi,fo,adam_offset); ibuf.alloc(ph.c_len); - obuf.allocForUncompression(ph.u_len); + obuf.allocForDecompression(ph.u_len); fi->seek(adam_offset + ph.buf_offset + ph.getPackHeaderSize(),SEEK_SET); fi->readx(ibuf,ph.c_len); diff --git a/src/p_tos.cpp b/src/p_tos.cpp index 978f973c..5ca4b92a 100644 --- a/src/p_tos.cpp +++ b/src/p_tos.cpp @@ -694,7 +694,7 @@ int PackTos::canUnpack() { void PackTos::unpack(OutputFile *fo) { ibuf.alloc(ph.c_len); - obuf.allocForUncompression(ph.u_len); + obuf.allocForDecompression(ph.u_len); fi->seek(FH_SIZE + ph.buf_offset + ph.getPackHeaderSize(), SEEK_SET); fi->readx(ibuf, ph.c_len); diff --git a/src/p_vmlinx.cpp b/src/p_vmlinx.cpp index e1650515..0039e721 100644 --- a/src/p_vmlinx.cpp +++ b/src/p_vmlinx.cpp @@ -632,7 +632,7 @@ void PackVmlinuxBase::unpack(OutputFile *fo) ph.c_len = p_note0->sh_size - sizeof(word); ibuf.alloc(ph.c_len); fi->readx(ibuf, ph.c_len); - obuf.allocForUncompression(ph.u_len); + obuf.allocForDecompression(ph.u_len); decompress(ibuf, obuf, false); fo->write(obuf, ph.u_len); obuf.dealloc(); @@ -644,7 +644,7 @@ void PackVmlinuxBase::unpack(OutputFile *fo) } ibuf.alloc(ph.c_len); fi->readx(ibuf, ph.c_len); - obuf.allocForUncompression(ph.u_len); + obuf.allocForDecompression(ph.u_len); decompress(ibuf, obuf); Filter ft(ph.level); @@ -661,7 +661,7 @@ void PackVmlinuxBase::unpack(OutputFile *fo) ph.c_len = p_note1->sh_size - sizeof(word); ibuf.alloc(ph.c_len); fi->readx(ibuf, p_note1->sh_size - sizeof(ph.u_len)); - obuf.allocForUncompression(ph.u_len); + obuf.allocForDecompression(ph.u_len); decompress(ibuf, obuf, false); fo->write(obuf, ph.u_len); obuf.dealloc(); diff --git a/src/p_vmlinz.cpp b/src/p_vmlinz.cpp index d5efdb01..2f7c3720 100644 --- a/src/p_vmlinz.cpp +++ b/src/p_vmlinz.cpp @@ -687,7 +687,7 @@ void PackVmlinuzI386::unpack(OutputFile *fo) // FIXME: but we could write the uncompressed "vmlinux" image ibuf.alloc(ph.c_len); - obuf.allocForUncompression(ph.u_len); + obuf.allocForDecompression(ph.u_len); fi->seek(setup_size + ph.buf_offset + ph.getPackHeaderSize(), SEEK_SET); fi->readx(ibuf, ph.c_len); @@ -1044,7 +1044,7 @@ void PackVmlinuzARMEL::unpack(OutputFile *fo) // FIXME: but we could write the uncompressed "vmlinux" image ibuf.alloc(ph.c_len); - obuf.allocForUncompression(ph.u_len); + obuf.allocForDecompression(ph.u_len); fi->seek(setup_size + ph.buf_offset + ph.getPackHeaderSize(), SEEK_SET); fi->readx(ibuf, ph.c_len); diff --git a/src/p_wcle.cpp b/src/p_wcle.cpp index e525036f..518f3299 100644 --- a/src/p_wcle.cpp +++ b/src/p_wcle.cpp @@ -756,7 +756,7 @@ void PackWcle::decodeObjectTable() void PackWcle::decodeImage() { - mb_oimage.allocForUncompression(ph.u_len); + mb_oimage.allocForDecompression(ph.u_len); oimage = mb_oimage; decompress(iimage + ph.buf_offset + ph.getPackHeaderSize(),oimage); diff --git a/src/pefile.cpp b/src/pefile.cpp index b2db65a4..392896c3 100644 --- a/src/pefile.cpp +++ b/src/pefile.cpp @@ -3024,7 +3024,7 @@ void PeFile::unpack0(OutputFile *fo, const ht &ih, ht &oh, checkOverlay(overlay); ibuf.alloc(ph.c_len); - obuf.allocForUncompression(ph.u_len); + obuf.allocForDecompression(ph.u_len); fi->seek(isection[1].rawdataptr - 64 + ph.buf_offset + ph.getPackHeaderSize(),SEEK_SET); fi->readx(ibuf, ibufgood= ph.c_len); diff --git a/src/util/membuffer.cpp b/src/util/membuffer.cpp index 4802b9cc..dd6b766e 100644 --- a/src/util/membuffer.cpp +++ b/src/util/membuffer.cpp @@ -122,7 +122,7 @@ unsigned MemBuffer::getSizeForCompression(unsigned uncompressed_size, unsigned e return bytes; } -unsigned MemBuffer::getSizeForUncompression(unsigned uncompressed_size, unsigned extra) { +unsigned MemBuffer::getSizeForDecompression(unsigned uncompressed_size, unsigned extra) { size_t bytes = mem_size(1, uncompressed_size, extra); // check return ACC_ICONV(unsigned, bytes); } @@ -132,8 +132,8 @@ void MemBuffer::allocForCompression(unsigned uncompressed_size, unsigned extra) alloc(size); } -void MemBuffer::allocForUncompression(unsigned uncompressed_size, unsigned extra) { - unsigned size = getSizeForUncompression(uncompressed_size, extra); +void MemBuffer::allocForDecompression(unsigned uncompressed_size, unsigned extra) { + unsigned size = getSizeForDecompression(uncompressed_size, extra); alloc(size); } diff --git a/src/util/membuffer.h b/src/util/membuffer.h index 8ef1820e..2e9f990e 100644 --- a/src/util/membuffer.h +++ b/src/util/membuffer.h @@ -78,11 +78,11 @@ public: ~MemBuffer(); static unsigned getSizeForCompression(unsigned uncompressed_size, unsigned extra = 0); - static unsigned getSizeForUncompression(unsigned uncompressed_size, unsigned extra = 0); + static unsigned getSizeForDecompression(unsigned uncompressed_size, unsigned extra = 0); void alloc(upx_uint64_t size); void allocForCompression(unsigned uncompressed_size, unsigned extra = 0); - void allocForUncompression(unsigned uncompressed_size, unsigned extra = 0); + void allocForDecompression(unsigned uncompressed_size, unsigned extra = 0); void dealloc(); void checkState() const;