diff --git a/ChangeLog b/ChangeLog index f37ba6f21..9ee74de5c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Fri Aug 1 02:15:20 CEST 2008 (acab) +------------------------------------ + * libclamav: enable support for UPX/LZMA (bb#910) + Fri Aug 1 00:07:30 CEST 2008 (tk) ---------------------------------- * libclamav: scan disasm data with type-8 sigs (bb#895) diff --git a/libclamav/pe.c b/libclamav/pe.c index 687a0461c..7e8200b9a 100644 --- a/libclamav/pe.c +++ b/libclamav/pe.c @@ -1745,10 +1745,14 @@ int cli_scanpe(int desc, cli_ctx *ctx) } } - if(0 && cli_memstr(UPX_LZMA2, 20, epbuff + 0x2f, 20)) { - uint32_t ndsize=cli_readint32(epbuff+0x21); - if(ndsize<=dsize) - upx_success = upx_inflatelzma(src, ssize, dest, &ndsize, exe_sections[i].rva, exe_sections[i + 1].rva, vep) >=0; + if(cli_memstr(UPX_LZMA2, 20, epbuff + 0x2f, 20)) { + uint32_t strictdsize=cli_readint32(epbuff+0x21); + if(strictdsize<=dsize) + upx_success = upx_inflatelzma(src, ssize, dest, &strictdsize, exe_sections[i].rva, exe_sections[i + 1].rva, vep) >=0; + } else if (cli_memstr(UPX_LZMA1, 20, epbuff + 0x39, 20)) { + uint32_t strictdsize=cli_readint32(epbuff+0x2b); + if(strictdsize<=dsize) + upx_success = upx_inflatelzma(src, ssize, dest, &strictdsize, exe_sections[i].rva, exe_sections[i + 1].rva, vep) >=0; } if(!upx_success) {