Skip Menu |

This queue is for tickets about the Archive-Zip CPAN distribution.

Report information
The Basics
Id: 11801
Status: resolved
Priority: 0/
Queue: Archive-Zip

Owner: Nobody in particular
Requestors: lupe [...]

Bug Information
Severity: (no value)
Broken in: 1.14
Fixed in: 1.14

Subject: Fails to unpack Sober.l ZIP file. WARNING!!! ATTACHMENT CONTAINS A VIRUS!!!
Download (untitled) / with headers
text/plain 337b
The Sober.l ZIP file can be unpacked with unzip and presumably with Windows ZIP utilities. Archive::Zip fails to unpack it, thereby denying AMaViS the chance to detect the worm. See
application/x-zip-compressed 44.3k

Message body not shown because it is not plain text.

RT-Send-CC: steve.peters [...],lhecking [...]
Download (untitled) / with headers
text/plain 463b
I have tested the sample zip file with all the examples that are shipped with Archive::Zip, and they all handle the file properly. That is, I have run all of these examples on the file at a command line: I suspect that this is a problem in Amavis. I have copied Steve Peters, the new co-maintainer of A::Z; he has generously offered to help. Please direct follow-ups to both of us. Thanks!
Download (untitled) / with headers
text/plain 108b
I'll get Amavis set up and try to narrow down where the problem might be. I'll let you know what I find.
I played around with Amavis and dupilicated most of its do_unzip() method in the test program below. I was able to extract the file. Compaing the `od` output of the member extracted with unzip(1) and test program below showed no differences. It looks like the problem is in a section of Amavis unrelated to the Archive::Zip code. #!/usr/bin/perl -w use strict; use Archive::Zip qw ( :CONSTANTS :ERROR_CODES ); my $zip = new Archive::Zip; Archive::Zip::setErrorHandler(sub{return 5}); my $ziperr = $zip->read(""); Archive::Zip::setErrorHandler(sub{die @_}); print "read() failed\n" if ($ziperr != AZ_OK); my $compmeth = ''; foreach ($zip->members()) { $compmeth = $_->compressionMethod; if ($compmeth == COMPRESSION_DEFLATED || $compmeth == COMPRESSION_STORED) { my $newpart = $_->fileName(); $zip->extractMember($_,$newpart) unless ($_->isDirectory); } else { # FIXME note: per member print $_->fileName(), ": unsupported compression method: $compmeth\n"; } }

This service is sponsored and maintained by Best Practical Solutions and runs on infrastructure.

Please report any issues with to