Package: libarchive-zip-perl Version: 1.30-3 Severity: important Tags: patch upstream
Writing a zip file to an unseekable file handle fails on a tell() call in the upstream 1.30 libarchive-zip-perl module. There is a bug to track this in CPAN: https://rt.cpan.org/Public/Bug/Display.html?id=54827 Their bug is still open, but has a patch to correct the issue in the meantime (attached here for convenience). -- System Information: Debian Release: squeeze/sid APT prefers testing APT policy: (500, 'testing') Architecture: i386 (i686) Kernel: Linux 2.6.32.16-strike (SMP w/1 CPU core) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages libarchive-zip-perl depends on: ii perl [libcompress-raw-zlib-pe 5.10.1-14 Larry Wall's Practical Extraction libarchive-zip-perl recommends no packages. libarchive-zip-perl suggests no packages. -- no debconf information
--- Member.pm 2009-06-30 04:51:10.000000000 -0700 +++ Member.pm 2010-02-20 16:49:32.000000000 -0800 @@ -157,15 +157,17 @@ sub bitFlag { my $self = shift; - # Set General Purpose Bit Flags according to the desiredCompressionLevel setting - if ( $self->desiredCompressionLevel == 1 || $self->desiredCompressionLevel == 2 ) { - $self->{'bitFlag'} = DEFLATING_COMPRESSION_FAST; - } elsif ( $self->desiredCompressionLevel == 3 || $self->desiredCompressionLevel == 4 - || $self->desiredCompressionLevel == 5 || $self->desiredCompressionLevel == 6 - || $self->desiredCompressionLevel == 7 ) { - $self->{'bitFlag'} = DEFLATING_COMPRESSION_NORMAL; - } elsif ( $self->desiredCompressionLevel == 8 || $self->desiredCompressionLevel == 9 ) { - $self->{'bitFlag'} = DEFLATING_COMPRESSION_MAXIMUM; + if ( @_ ) { + # Set General Purpose Bit Flags according to the desiredCompressionLevel setting + if ( $self->desiredCompressionLevel == 1 || $self->desiredCompressionLevel == 2 ) { + $self->{'bitFlag'} = DEFLATING_COMPRESSION_FAST; + } elsif ( $self->desiredCompressionLevel == 3 || $self->desiredCompressionLevel == 4 + || $self->desiredCompressionLevel == 5 || $self->desiredCompressionLevel == 6 + || $self->desiredCompressionLevel == 7 ) { + $self->{'bitFlag'} = DEFLATING_COMPRESSION_NORMAL; + } elsif ( $self->desiredCompressionLevel == 8 || $self->desiredCompressionLevel == 9 ) { + $self->{'bitFlag'} = DEFLATING_COMPRESSION_MAXIMUM; + } } $self->{'bitFlag'}; }