bz#10974 fix for false negative with lzma compression within xar files.

pull/6/head
Steven Morgan 11 years ago
parent 2ba813812e
commit f8708da806
  1. 15
      libclamav/xar.c

@ -638,6 +638,7 @@ int cli_scanxar(cli_ctx *ctx)
unsigned long in_remaining = length;
unsigned long out_size = 0;
unsigned char * buff = __lzma_wrap_alloc(NULL, CLI_LZMA_OBUF_SIZE);
int lret;
memset(&lz, 0, sizeof(lz));
if (buff == NULL) {
@ -663,9 +664,9 @@ int cli_scanxar(cli_ctx *ctx)
xar_hash_update(a_hash_ctx, blockp, CLI_LZMA_HDR_SIZE, a_hash);
rc = cli_LzmaInit(&lz, 0);
if (rc != LZMA_RESULT_OK) {
cli_dbgmsg("cli_scanxar: cli_LzmaInit() fails: %i.\n", rc);
lret = cli_LzmaInit(&lz, 0);
if (lret != LZMA_RESULT_OK) {
cli_dbgmsg("cli_scanxar: cli_LzmaInit() fails: %i.\n", lret);
rc = CL_EFORMAT;
__lzma_wrap_free(NULL, buff);
extract_errors++;
@ -695,9 +696,9 @@ int cli_scanxar(cli_ctx *ctx)
goto exit_tmpfile;
}
rc = cli_LzmaDecode(&lz);
if (rc != LZMA_RESULT_OK && rc != LZMA_STREAM_END) {
cli_dbgmsg("cli_scanxar: cli_LzmaDecode() fails: %i.\n", rc);
lret = cli_LzmaDecode(&lz);
if (lret != LZMA_RESULT_OK && lret != LZMA_STREAM_END) {
cli_dbgmsg("cli_scanxar: cli_LzmaDecode() fails: %i.\n", lret);
rc = CL_EFORMAT;
extract_errors++;
break;
@ -735,7 +736,7 @@ int cli_scanxar(cli_ctx *ctx)
break;
}
if (rc == LZMA_STREAM_END)
if (lret == LZMA_STREAM_END)
break;
}

Loading…
Cancel
Save