From 603dc83c1a27c2842d86d65c6ffb650a4b9d56a3 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Tue, 29 Jun 2004 20:42:08 +0000 Subject: [PATCH] Fixed wrong n_mru storage in putPackHeader(). committer: mfx 1088541728 +0000 --- src/packhead.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/packhead.cpp b/src/packhead.cpp index 43c69789..06000e4b 100644 --- a/src/packhead.cpp +++ b/src/packhead.cpp @@ -150,7 +150,8 @@ void PackHeader::putPackHeader(upx_bytep p) set_le32(p+24,u_file_size); p[28] = (unsigned char) filter; p[29] = (unsigned char) filter_cto; - p[30] = (unsigned char) (n_mru ? 0 : n_mru -1); + assert(n_mru == 0 || (n_mru >= 2 && n_mru <= 256)); + p[30] = (unsigned char) (n_mru ? n_mru - 1 : 0); } set_le32(p+8,u_adler); set_le32(p+12,c_adler); @@ -166,7 +167,8 @@ void PackHeader::putPackHeader(upx_bytep p) set_be32(p+24,u_file_size); p[28] = (unsigned char) filter; p[29] = (unsigned char) filter_cto; - p[30] = (unsigned char) (n_mru ? 0 : n_mru -1); + assert(n_mru == 0 || (n_mru >= 2 && n_mru <= 256)); + p[30] = (unsigned char) (n_mru ? n_mru - 1 : 0); } p[4] = (unsigned char) version; @@ -246,7 +248,7 @@ bool PackHeader::fillPackHeader(const upx_bytep buf, int blen) u_file_size = get_le32(p+24); off_filter = 28; filter_cto = p[29]; - n_mru = p[30] ? 1+ p[30] : 0; + n_mru = p[30] ? 1 + p[30] : 0; } } else @@ -258,7 +260,7 @@ bool PackHeader::fillPackHeader(const upx_bytep buf, int blen) u_file_size = get_be32(p+24); off_filter = 28; filter_cto = p[29]; - n_mru = p[30] ? 1+ p[30] : 0; + n_mru = p[30] ? 1 + p[30] : 0; } if (version >= 10)