[libarchive-zip-perl] 01/05: Imported Upstream version 1.47
gregor herrmann
gregoa at debian.org
Thu Jun 18 16:47:44 UTC 2015
This is an automated email from the git hooks/post-receive script.
gregoa pushed a commit to branch master
in repository libarchive-zip-perl.
commit 720cf082ad23414e7ac211576626e4f4a3328667
Author: gregor herrmann <gregoa at debian.org>
Date: Thu Jun 18 18:34:43 2015 +0200
Imported Upstream version 1.47
---
Changes | 4 ++++
MANIFEST | 7 ++++++
META.json | 4 ++--
META.yml | 34 ++++++++++++++---------------
lib/Archive/Zip.pm | 2 +-
lib/Archive/Zip/Archive.pm | 11 +++++++++-
lib/Archive/Zip/BufferedFileHandle.pm | 2 +-
lib/Archive/Zip/DirectoryMember.pm | 2 +-
lib/Archive/Zip/FileMember.pm | 2 +-
lib/Archive/Zip/Member.pm | 3 ++-
lib/Archive/Zip/MemberRead.pm | 2 +-
lib/Archive/Zip/MockFileHandle.pm | 2 +-
lib/Archive/Zip/NewFileMember.pm | 2 +-
lib/Archive/Zip/StringMember.pm | 2 +-
lib/Archive/Zip/Tree.pm | 2 +-
lib/Archive/Zip/ZipFileMember.pm | 2 +-
t/20_bug_github11.t | 39 ++++++++++++++++++++++++++++++++++
t/21_zip64.t | 20 +++++++++++++++++
t/22_deflated_dir.t | 23 ++++++++++++++++++++
t/data/bad_github11.zip | Bin 0 -> 455 bytes
t/data/good_github11.zip | Bin 0 -> 407 bytes
t/data/jar.zip | Bin 0 -> 448 bytes
t/data/zip64.zip | Bin 0 -> 242 bytes
23 files changed, 134 insertions(+), 31 deletions(-)
diff --git a/Changes b/Changes
index e9640b6..8a44bfa 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,9 @@
Revision history for Perl extension Archive-Zip
+1.47 Wed 17 Jun 2015
+ - zip file with a deflated directory cannot be written out again [github/ntyni]
+ - add missing test data to MANIFEST
+
1.46 Tue 24 Mar 2015
- "CRC or size mismatch" when extracting member second time [github/AGWA github/pwr22]
diff --git a/MANIFEST b/MANIFEST
index 17d481f..57ec4c7 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -52,14 +52,20 @@ t/16_decrypt.t
t/17_101092.t
t/18_bug_92205.t
t/19_bug_101240.t
+t/20_bug_github11.t
+t/21_zip64.t
+t/22_deflated_dir.t
t/badjpeg/expected.jpg
t/badjpeg/source.zip
t/common.pm
+t/data/bad_github11.zip
t/data/chmod.zip
t/data/crypcomp.zip
t/data/crypt.zip
t/data/def.zip
t/data/defstr.zip
+t/data/good_github11.zip
+t/data/jar.zip
t/data/store.zip
t/data/storestr.zip
t/data/emptydef.zip
@@ -71,5 +77,6 @@ t/data/mkzip.pl
t/data/perl.zip
t/data/streamed.zip
t/data/winzip.zip
+t/data/zip64.zip
META.yml Module YAML meta-data (added by MakeMaker)
META.json Module JSON meta-data (added by MakeMaker)
diff --git a/META.json b/META.json
index 6ac0c94..2024157 100644
--- a/META.json
+++ b/META.json
@@ -4,7 +4,7 @@
"Ned Konz <perl at bike-nomad.com>"
],
"dynamic_config" : 1,
- "generated_by" : "ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.142690",
+ "generated_by" : "ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120630",
"license" : [
"perl_5"
],
@@ -53,5 +53,5 @@
"url" : "https://github.com/redhotpenguin/perl-Archive-Zip-svn"
}
},
- "version" : "1.46"
+ "version" : "1.47"
}
diff --git a/META.yml b/META.yml
index 43aff61..db96369 100644
--- a/META.yml
+++ b/META.yml
@@ -3,33 +3,33 @@ abstract: 'Provide an interface to ZIP archive files.'
author:
- 'Ned Konz <perl at bike-nomad.com>'
build_requires:
- Test::More: '0.88'
+ Test::More: 0.88
configure_requires:
- ExtUtils::MakeMaker: '0'
+ ExtUtils::MakeMaker: 0
dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.142690'
+generated_by: 'ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120630'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
- version: '1.4'
+ version: 1.4
name: Archive-Zip
no_index:
directory:
- t
- inc
requires:
- Compress::Raw::Zlib: '2.017'
- File::Basename: '0'
- File::Copy: '0'
- File::Find: '0'
- File::Path: '0'
- File::Spec: '0.80'
- File::Temp: '0'
- IO::File: '0'
- IO::Handle: '0'
- IO::Seekable: '0'
- Time::Local: '0'
- perl: '5.006'
+ Compress::Raw::Zlib: 2.017
+ File::Basename: 0
+ File::Copy: 0
+ File::Find: 0
+ File::Path: 0
+ File::Spec: 0.80
+ File::Temp: 0
+ IO::File: 0
+ IO::Handle: 0
+ IO::Seekable: 0
+ Time::Local: 0
+ perl: 5.006
resources:
repository: https://github.com/redhotpenguin/perl-Archive-Zip-svn
-version: '1.46'
+version: 1.47
diff --git a/lib/Archive/Zip.pm b/lib/Archive/Zip.pm
index 786eed7..1da6f6d 100644
--- a/lib/Archive/Zip.pm
+++ b/lib/Archive/Zip.pm
@@ -14,7 +14,7 @@ use FileHandle ();
use vars qw( $VERSION @ISA );
BEGIN {
- $VERSION = '1.46';
+ $VERSION = '1.47';
require Exporter;
@ISA = qw( Exporter );
diff --git a/lib/Archive/Zip/Archive.pm b/lib/Archive/Zip/Archive.pm
index ae87a3c..9f572fe 100644
--- a/lib/Archive/Zip/Archive.pm
+++ b/lib/Archive/Zip/Archive.pm
@@ -13,7 +13,7 @@ use Cwd;
use vars qw( $VERSION @ISA );
BEGIN {
- $VERSION = '1.46';
+ $VERSION = '1.47';
@ISA = qw( Archive::Zip );
if ($^O eq 'MSWin32') {
@@ -657,6 +657,15 @@ sub _readEndOfCentralDirectory {
$zipfileCommentLength
) = unpack(END_OF_CENTRAL_DIRECTORY_FORMAT, $header);
+ if ($self->{'diskNumber'} == 0xFFFF ||
+ $self->{'diskNumberWithStartOfCentralDirectory'} == 0xFFFF ||
+ $self->{'numberOfCentralDirectoriesOnThisDisk'} == 0xFFFF ||
+ $self->{'numberOfCentralDirectories'} == 0xFFFF ||
+ $self->{'centralDirectorySize'} == 0xFFFFFFFF ||
+ $self->{'centralDirectoryOffsetWRTStartingDiskNumber'} == 0xFFFFFFFF) {
+ return _formatError("zip64 not supported");
+ }
+
if ($zipfileCommentLength) {
my $zipfileComment = '';
$bytesRead = $fh->read($zipfileComment, $zipfileCommentLength);
diff --git a/lib/Archive/Zip/BufferedFileHandle.pm b/lib/Archive/Zip/BufferedFileHandle.pm
index e0ae642..ab049f1 100644
--- a/lib/Archive/Zip/BufferedFileHandle.pm
+++ b/lib/Archive/Zip/BufferedFileHandle.pm
@@ -13,7 +13,7 @@ use Carp;
use vars qw{$VERSION};
BEGIN {
- $VERSION = '1.46';
+ $VERSION = '1.47';
$VERSION = eval $VERSION;
}
diff --git a/lib/Archive/Zip/DirectoryMember.pm b/lib/Archive/Zip/DirectoryMember.pm
index 7309a59..d2dd840 100644
--- a/lib/Archive/Zip/DirectoryMember.pm
+++ b/lib/Archive/Zip/DirectoryMember.pm
@@ -6,7 +6,7 @@ use File::Path;
use vars qw( $VERSION @ISA );
BEGIN {
- $VERSION = '1.46';
+ $VERSION = '1.47';
@ISA = qw( Archive::Zip::Member );
}
diff --git a/lib/Archive/Zip/FileMember.pm b/lib/Archive/Zip/FileMember.pm
index 7092993..0577112 100644
--- a/lib/Archive/Zip/FileMember.pm
+++ b/lib/Archive/Zip/FileMember.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw( $VERSION @ISA );
BEGIN {
- $VERSION = '1.46';
+ $VERSION = '1.47';
@ISA = qw ( Archive::Zip::Member );
}
diff --git a/lib/Archive/Zip/Member.pm b/lib/Archive/Zip/Member.pm
index a5866e4..9c8995d 100644
--- a/lib/Archive/Zip/Member.pm
+++ b/lib/Archive/Zip/Member.pm
@@ -6,7 +6,7 @@ use strict;
use vars qw( $VERSION @ISA );
BEGIN {
- $VERSION = '1.46';
+ $VERSION = '1.47';
@ISA = qw( Archive::Zip );
if ($^O eq 'MSWin32') {
@@ -1086,6 +1086,7 @@ sub _writeData {
my ($outRef, $status) = $self->readChunk($chunkSize);
symlink $$outRef, $self->{'newName'};
} else {
+ return AZ_OK if ($self->uncompressedSize() == 0);
my $status;
my $chunkSize = $Archive::Zip::ChunkSize;
while ($self->_readDataRemaining() > 0) {
diff --git a/lib/Archive/Zip/MemberRead.pm b/lib/Archive/Zip/MemberRead.pm
index 3f56e84..56ca4f1 100644
--- a/lib/Archive/Zip/MemberRead.pm
+++ b/lib/Archive/Zip/MemberRead.pm
@@ -40,7 +40,7 @@ use vars qw{$VERSION};
my $nl;
BEGIN {
- $VERSION = '1.46';
+ $VERSION = '1.47';
$VERSION = eval $VERSION;
# Requirement for newline conversion. Should check for e.g., DOS and OS/2 as well, but am too lazy.
diff --git a/lib/Archive/Zip/MockFileHandle.pm b/lib/Archive/Zip/MockFileHandle.pm
index 4417867..106c536 100644
--- a/lib/Archive/Zip/MockFileHandle.pm
+++ b/lib/Archive/Zip/MockFileHandle.pm
@@ -10,7 +10,7 @@ use strict;
use vars qw{$VERSION};
BEGIN {
- $VERSION = '1.46';
+ $VERSION = '1.47';
$VERSION = eval $VERSION;
}
diff --git a/lib/Archive/Zip/NewFileMember.pm b/lib/Archive/Zip/NewFileMember.pm
index 871d040..264136e 100644
--- a/lib/Archive/Zip/NewFileMember.pm
+++ b/lib/Archive/Zip/NewFileMember.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw( $VERSION @ISA );
BEGIN {
- $VERSION = '1.46';
+ $VERSION = '1.47';
@ISA = qw ( Archive::Zip::FileMember );
}
diff --git a/lib/Archive/Zip/StringMember.pm b/lib/Archive/Zip/StringMember.pm
index 2312dd7..2b5bffc 100644
--- a/lib/Archive/Zip/StringMember.pm
+++ b/lib/Archive/Zip/StringMember.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw( $VERSION @ISA );
BEGIN {
- $VERSION = '1.46';
+ $VERSION = '1.47';
@ISA = qw( Archive::Zip::Member );
}
diff --git a/lib/Archive/Zip/Tree.pm b/lib/Archive/Zip/Tree.pm
index cb50b22..f2db246 100644
--- a/lib/Archive/Zip/Tree.pm
+++ b/lib/Archive/Zip/Tree.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw{$VERSION};
BEGIN {
- $VERSION = '1.46';
+ $VERSION = '1.47';
}
use Archive::Zip;
diff --git a/lib/Archive/Zip/ZipFileMember.pm b/lib/Archive/Zip/ZipFileMember.pm
index 0ac7f78..e57722c 100644
--- a/lib/Archive/Zip/ZipFileMember.pm
+++ b/lib/Archive/Zip/ZipFileMember.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw( $VERSION @ISA );
BEGIN {
- $VERSION = '1.46';
+ $VERSION = '1.47';
@ISA = qw ( Archive::Zip::FileMember );
}
diff --git a/t/20_bug_github11.t b/t/20_bug_github11.t
new file mode 100644
index 0000000..5bad5bd
--- /dev/null
+++ b/t/20_bug_github11.t
@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+
+# Github 11: "CRC or size mismatch" when extracting member second time
+# Test for correct functionality to prevent regression
+
+use strict;
+use warnings;
+
+use Archive::Zip qw( :ERROR_CODES );
+use File::Spec;
+use File::Path;
+use t::common;
+
+use Test::More tests => 2;
+
+# create test env
+my $GH_ISSUE = 'github11';
+my $TEST_NAME = "20_bug_$GH_ISSUE";
+my $TEST_DIR = File::Spec->catdir(TESTDIR, $TEST_NAME);
+mkpath($TEST_DIR);
+
+# test 1
+my $DATA_DIR = File::Spec->catfile('t', 'data');
+my $GOOD_ZIP_FILE = File::Spec->catfile($DATA_DIR, "good_${GH_ISSUE}.zip");
+my $GOOD_ZIP = Archive::Zip->new($GOOD_ZIP_FILE);
+my $MEMBER_FILE = 'FILE';
+my $member = $GOOD_ZIP->memberNamed($MEMBER_FILE);
+my $OUT_FILE = File::Spec->catfile($TEST_DIR, "out");
+# Extracting twice triggered the bug
+$member->extractToFileNamed($OUT_FILE);
+is($member->extractToFileNamed($OUT_FILE), AZ_OK, 'Testing known good zip');
+
+# test 2
+my $BAD_ZIP_FILE = File::Spec->catfile($DATA_DIR, "bad_${GH_ISSUE}.zip");
+my $BAD_ZIP = Archive::Zip->new($BAD_ZIP_FILE);
+$member = $BAD_ZIP->memberNamed($MEMBER_FILE);
+# Extracting twice triggered the bug
+$member->extractToFileNamed($OUT_FILE);
+is($member->extractToFileNamed($OUT_FILE), AZ_OK, 'Testing known bad zip');
diff --git a/t/21_zip64.t b/t/21_zip64.t
new file mode 100644
index 0000000..f337db8
--- /dev/null
+++ b/t/21_zip64.t
@@ -0,0 +1,20 @@
+#!/usr/bin/perl
+
+# Test to make sure zip64 files are properly detected
+
+use strict;
+use warnings;
+
+use Archive::Zip qw( :ERROR_CODES );
+use File::Spec;
+use t::common;
+
+use Test::More tests => 1;
+
+my $DATA_DIR = File::Spec->catfile('t', 'data');
+my $ZIP_FILE = File::Spec->catfile($DATA_DIR, "zip64.zip");
+
+my @errors = ();
+$Archive::Zip::ErrorHandler = sub { push @errors, @_ };
+eval { Archive::Zip->new($ZIP_FILE) };
+ok($errors[0] =~ /zip64 not supported/, 'Got expected zip64 error');
diff --git a/t/22_deflated_dir.t b/t/22_deflated_dir.t
new file mode 100644
index 0000000..1239b17
--- /dev/null
+++ b/t/22_deflated_dir.t
@@ -0,0 +1,23 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Archive::Zip qw( :ERROR_CODES );
+use File::Spec;
+use t::common;
+
+use Test::More tests => 4;
+
+my $zip = Archive::Zip->new();
+isa_ok( $zip, 'Archive::Zip' );
+is( $zip->read(File::Spec->catfile('t', 'data', 'jar.zip')), AZ_OK, 'Read file' );
+
+my $ret = eval { $zip->writeToFileNamed(OUTPUTZIP) };
+
+is($ret, AZ_OK, 'Wrote file');
+
+my ($status, $zipout) = testZip();
+# STDERR->print("status= $status, out=$zipout\n");
+skip( "test zip doesn't work", 1 ) if $testZipDoesntWork;
+is( $status, 0, "output zip isn't corrupted" );
diff --git a/t/data/bad_github11.zip b/t/data/bad_github11.zip
new file mode 100644
index 0000000..3fe4892
Binary files /dev/null and b/t/data/bad_github11.zip differ
diff --git a/t/data/good_github11.zip b/t/data/good_github11.zip
new file mode 100644
index 0000000..39ee392
Binary files /dev/null and b/t/data/good_github11.zip differ
diff --git a/t/data/jar.zip b/t/data/jar.zip
new file mode 100644
index 0000000..a8da50f
Binary files /dev/null and b/t/data/jar.zip differ
diff --git a/t/data/zip64.zip b/t/data/zip64.zip
new file mode 100644
index 0000000..a2ee1fa
Binary files /dev/null and b/t/data/zip64.zip differ
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libarchive-zip-perl.git
More information about the Pkg-perl-cvs-commits
mailing list