Bug#600848: libarchive-zip-perl: Failure on unseekable file handle after desiredCompressionLevel() is called

Matt Meno mmeno at idealcorp.com
Wed Oct 20 14:53:28 UTC 2010


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
-------------- next part --------------
--- 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'};
 }



More information about the pkg-perl-maintainers mailing list