diff --git a/src/p_unix.cpp b/src/p_unix.cpp index 16f36988..8af0530c 100644 --- a/src/p_unix.cpp +++ b/src/p_unix.cpp @@ -658,7 +658,11 @@ void PackUnix::unpack(OutputFile *fo) fi->readx(&bhdr, szb_info); ph.u_len = sz_unc = get_te32(&bhdr.sz_unc); ph.c_len = sz_cpr = get_te32(&bhdr.sz_cpr); - ph.set_method(bhdr.b_method); + if (szb_info < sizeof(b_info)) { // some upx version 11 + bhdr.b_method = ph.method; + bhdr.b_ftid = ph.filter; + bhdr.b_cto8 = ph.filter_cto; + } if (sz_unc == 0) // uncompressed size 0 -> EOF {