This is an automated email from the ASF dual-hosted git repository. bodewig pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-compress.git
commit 13cd268a4c99045a32a30ef5dc3d63ea04477d18 Merge: b4fd49a f161254 Author: Lee <peteralfred...@gmail.com> AuthorDate: Tue Jan 7 21:19:55 2020 +0800 Merge branch 'master' of https://github.com/apache/commons-compress into COMPRESS-477-zip64 .travis.yml | 4 +- NOTICE.txt | 2 +- RELEASE-NOTES.txt | 3 + src/changes/changes.xml | 19 +- .../compress/archivers/tar/TarArchiveEntry.java | 56 ++- .../archivers/tar/TarArchiveInputStream.java | 415 +++++++++++++++++++-- .../archivers/tar/TarArchiveSparseEntry.java | 22 ++ .../archivers/tar/TarArchiveStructSparse.java | 82 ++++ .../compress/archivers/tar/TarConstants.java | 24 ++ .../commons/compress/archivers/tar/TarUtils.java | 19 +- .../archivers/zip/ZipArchiveOutputStream.java | 11 +- .../zip/ZipSplitReadOnlySeekableByteChannel.java | 6 +- .../commons/compress/utils/BoundedInputStream.java | 12 + .../utils/MultiReadOnlySeekableByteChannel.java | 13 + .../utils/SeekableInMemoryByteChannel.java | 40 +- src/site/xdoc/index.xml | 2 + src/site/xdoc/limitations.xml | 12 +- src/site/xdoc/zip.xml | 55 ++- .../org/apache/commons/compress/OsgiITest.java | 23 ++ .../compress/archivers/tar/SparseFilesTest.java | 182 ++++++++- .../archivers/tar/TarArchiveInputStreamTest.java | 10 +- .../compress/archivers/tar/TarUtilsTest.java | 12 + .../MultiReadOnlySeekableByteChannelTest.java | 93 +++++ .../utils/SeekableInMemoryByteChannelTest.java | 222 ++++++++++- src/test/resources/oldgnu_extended_sparse.tar | Bin 0 -> 10240 bytes 25 files changed, 1270 insertions(+), 69 deletions(-) diff --cc src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java index 759aa75,0ad4f8b..f630036 --- a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java +++ b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java @@@ -1484,9 -1474,20 +1484,11 @@@ public class ZipArchiveOutputStream ext // number of entries final int numberOfEntries = entries.size(); - if (numberOfEntries > ZIP64_MAGIC_SHORT - && zip64Mode == Zip64Mode.Never) { - throw new Zip64RequiredException(Zip64RequiredException - .TOO_MANY_ENTRIES_MESSAGE); - } - if (cdOffset > ZIP64_MAGIC && zip64Mode == Zip64Mode.Never) { - throw new Zip64RequiredException(Zip64RequiredException - .ARCHIVE_TOO_BIG_MESSAGE); - } // total number of entries in the central directory on this disk - int numOfEntriesOnThisDisk = numberOfCDInDiskData.get(numberOfThisDisk) == null ? 0 : numberOfCDInDiskData.get(numberOfThisDisk); + int numOfEntriesOnThisDisk = isSplitZip + ? (numberOfCDInDiskData.get(numberOfThisDisk) == null ? 0 : numberOfCDInDiskData.get(numberOfThisDisk)) + : numberOfEntries; final byte[] numOfEntriesOnThisDiskData = ZipShort .getBytes(Math.min(numOfEntriesOnThisDisk, ZIP64_MAGIC_SHORT)); writeCounted(numOfEntriesOnThisDiskData);