From 7f0545cae7207ff91e39513108834e93674f7a6f Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Sat, 20 May 2006 13:37:34 +0200 Subject: [PATCH] Check result of hdr compression. --- src/packer.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/packer.cpp b/src/packer.cpp index bbed85c5..159dbb7d 100644 --- a/src/packer.cpp +++ b/src/packer.cpp @@ -1402,7 +1402,8 @@ void Packer::compressWithFilters(Filter *parm_ft, for (int m = 0; m < nmethods; m++) // for all methods { unsigned hdr_clen = 0; - if (hdr_buf && hdr_u_len) { + if (hdr_buf && hdr_u_len) + { unsigned result[16]; upx_compress_config_t conf; memset(&conf, 0xff, sizeof(conf)); @@ -1412,7 +1413,10 @@ void Packer::compressWithFilters(Filter *parm_ft, } int r = upx_compress(hdr_buf, hdr_u_len, *otemp, &hdr_clen, 0, methods[m], 10, &conf, result); - (void)r; + if (r != UPX_E_OK) + throwInternalError("header compression failed"); + if (hdr_clen >= hdr_u_len) + throwInternalError("header compression size increase"); } for (int i = 0; i < nfilters; i++) // for all filters {