severity 774686 important tags 774686 + patch thanks * Sebastian Andrzej Siewior | 2015-01-08 15:33:19 [+0100]:
>* =?UTF-8?Q?B=C3=bcsc...@buxtehude.debian.org | 2015-01-06 10:09:21 [+0100]: > >>On some files clamav reports an error. >>Example: >>root@host:~# clamscan projectlibre-1.5.9.msi >>projectlibre-1.5.9.msi: Can't create new file ERROR > >If you start with --debug you see > >I will check later how the old >library handles the unpacking error. The old implementation reports an error as well: | LibClamAV debug: CDBNAME:CL_TYPE_MSCAB:0:ANTLR*TXT:0:1208:0:1:0:(nil) | LibClamAV debug: CAB: Extracting file ANTLR*TXT to /tmp/clamav-1ede6fca14a6572195edff162795ac54.tmp, size 1208, max_size: 26214400 | LibClamAV debug: CAB: Compression method: MSZIP | LibClamAV debug: cab_read: WARNING: partial data block | LibClamAV debug: mszip_decompress: inflate error -2 | LibClamAV debug: mszip_decompress: MSZIP error, 32768 bytes of data lost | LibClamAV debug: in cli_magic_scandesc (reclevel: 1/16) | LibClamAV debug: Recognized binary data | LibClamAV debug: cache_check: e6cac7c8bbd43fe2143bfd898b8482ed is negative | LibClamAV debug: in cli_check_mydoom_log() | LibClamAV debug: hashtab: Freeing hashset, elements: 0, capacity: 0 | LibClamAV debug: cli_magic_scandesc: returning 0 at line 2470 | LibClamAV debug: cache_add: e6cac7c8bbd43fe2143bfd898b8482ed (level 0) | LibClamAV debug: CDBNAME:CL_TYPE_MSCAB:0:APACHE*LICENSE*2*0*TXT:0:11358:0:2:0:(nil) | LibClamAV debug: CAB: Extracting file APACHE*LICENSE*2*0*TXT to /tmp/clamav-e1d62e231a5e0d816a76dc36df124b0e.tmp, size 11358, max_size: 26214400 | LibClamAV debug: CAB: Compression method: MSZIP | LibClamAV debug: CAB: Length from header 11358 but wrote 0 bytes | LibClamAV debug: in cli_magic_scandesc (reclevel: 1/16) | LibClamAV debug: Recognized binary data | LibClamAV debug: cache_check: c1de3d128ba264ad4b1e9d0f5b8ba4a3 is negative | LibClamAV debug: in cli_check_mydoom_log() | LibClamAV debug: hashtab: Freeing hashset, elements: 0, capacity: 0 | LibClamAV debug: cli_magic_scandesc: returning 0 at line 2470 | LibClamAV debug: cache_add: c1de3d128ba264ad4b1e9d0f5b8ba4a3 (level 0) but continues scanning. I will do the same change here by applying the patch at the end of this email. I upgraded the severity here to important since we have here some loss of functionality. I can prepare you a Wheezy package with this change if you like. I will have to check with the team if this is something we want to address now or wait for the next clamav release. diff --git a/libclamav/libmspack.c b/libclamav/libmspack.c index e94312e..92338d5 100644 --- a/libclamav/libmspack.c +++ b/libclamav/libmspack.c @@ -350,8 +350,8 @@ int cli_scanmscab(cli_ctx *ctx, off_t sfx_offset) if (ret) { if (ret == CL_VIRUS) { virus_num++; - if (!SCAN_ALL) - break; + if (SCAN_ALL) + continue; } goto out_close; } @@ -382,14 +382,12 @@ int cli_scanmscab(cli_ctx *ctx, off_t sfx_offset) ops_ex.max_size = max_size; /* scan */ ret = cab_d->extract(cab_d, cab_f, tmp_fname); - if (ret) { - /* Failed to extract */ + if (ret) + /* Failed to extract. Try to scan what is there */ cli_dbgmsg("%s() failed to extract %d\n", __func__, ret); - } else { - ret = cli_scanfile(tmp_fname, ctx); - if (ret == CL_VIRUS) - virus_num++; - } + ret = cli_scanfile(tmp_fname, ctx); + if (ret == CL_VIRUS) + virus_num++; if (!ctx->engine->keeptmp) { if (!access(tmp_fname, R_OK) && cli_unlink(tmp_fname)) { free(tmp_fname); @@ -399,8 +397,12 @@ int cli_scanmscab(cli_ctx *ctx, off_t sfx_offset) } free(tmp_fname); files++; - if (ret == CL_VIRUS && SCAN_ALL) - continue; + if (ret == CL_VIRUS) { + if (SCAN_ALL) + continue; + else + break; + } if (ret) break; } @@ -457,8 +459,8 @@ int cli_scanmschm(cli_ctx *ctx) if (ret) { if (ret == CL_VIRUS) { virus_num++; - if (!SCAN_ALL) - break; + if (SCAN_ALL) + continue; } goto out_close; } @@ -490,14 +492,13 @@ int cli_scanmschm(cli_ctx *ctx) /* scan */ ret = mschm_d->extract(mschm_d, mschm_f, tmp_fname); - if (ret) { - /* Failed to extract */ + if (ret) + /* Failed to extract. Try to scan what is there */ cli_dbgmsg("%s() failed to extract %d\n", __func__, ret); - } else { - ret = cli_scanfile(tmp_fname, ctx); - if (ret == CL_VIRUS) - virus_num++; - } + ret = cli_scanfile(tmp_fname, ctx); + if (ret == CL_VIRUS) + virus_num++; + if (!ctx->engine->keeptmp) { if (!access(tmp_fname, R_OK) && cli_unlink(tmp_fname)) { free(tmp_fname); @@ -507,8 +508,12 @@ int cli_scanmschm(cli_ctx *ctx) } free(tmp_fname); files++; - if (ret == CL_VIRUS && SCAN_ALL) - continue; + if (ret == CL_VIRUS) { + if (SCAN_ALL) + continue; + else + break; + } if (ret) break; } -- 1.7.10.4 Sebastian -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org