You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bo...@apache.org on 2013/12/07 17:03:55 UTC
svn commit: r1548937 - in
/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress:
archivers/arj/ archivers/sevenz/ utils/
Author: bodewig
Date: Sat Dec 7 16:03:54 2013
New Revision: 1548937
URL: http://svn.apache.org/r1548937
Log:
CRC32 is supposed to be an unsigned int
Modified:
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/arj/ArjArchiveInputStream.java
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/arj/LocalFileHeader.java
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/Archive.java
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/Folder.java
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntry.java
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/StartHeader.java
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SubStreamsInfo.java
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/utils/CRC32VerifyingInputStream.java
Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/arj/ArjArchiveInputStream.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/arj/ArjArchiveInputStream.java?rev=1548937&r1=1548936&r2=1548937&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/arj/ArjArchiveInputStream.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/arj/ArjArchiveInputStream.java Sat Dec 7 16:03:54 2013
@@ -142,10 +142,10 @@ public class ArjArchiveInputStream exten
if (basicHeaderSize <= 2600) {
basicHeaderBytes = new byte[basicHeaderSize];
readFully(in, basicHeaderBytes);
- final int basicHeaderCrc32 = read32(in);
+ final long basicHeaderCrc32 = read32(in) & 0xFFFFFFFFL;
final CRC32 crc32 = new CRC32();
crc32.update(basicHeaderBytes);
- if (basicHeaderCrc32 == (int)crc32.getValue()) {
+ if (basicHeaderCrc32 == crc32.getValue()) {
found = true;
}
}
@@ -199,10 +199,10 @@ public class ArjArchiveInputStream exten
if (extendedHeaderSize > 0) {
mainHeader.extendedHeaderBytes = new byte[extendedHeaderSize];
readFully(in, mainHeader.extendedHeaderBytes);
- final int extendedHeaderCrc32 = read32(in);
+ final long extendedHeaderCrc32 = 0xffffFFFFL & read32(in);
final CRC32 crc32 = new CRC32();
crc32.update(mainHeader.extendedHeaderBytes);
- if (extendedHeaderCrc32 != (int)crc32.getValue()) {
+ if (extendedHeaderCrc32 != crc32.getValue()) {
throw new IOException("Extended header CRC32 verification failure");
}
}
@@ -235,7 +235,7 @@ public class ArjArchiveInputStream exten
localFileHeader.dateTimeModified = read32(firstHeader);
localFileHeader.compressedSize = 0xffffFFFFL & read32(firstHeader);
localFileHeader.originalSize = 0xffffFFFFL & read32(firstHeader);
- localFileHeader.originalCrc32 = read32(firstHeader);
+ localFileHeader.originalCrc32 = 0xffffFFFFL & read32(firstHeader);
localFileHeader.fileSpecPosition = read16(firstHeader);
localFileHeader.fileAccessMode = read16(firstHeader);
pushedBackBytes(20);
@@ -252,10 +252,10 @@ public class ArjArchiveInputStream exten
while ((extendedHeaderSize = read16(in)) > 0) {
final byte[] extendedHeaderBytes = new byte[extendedHeaderSize];
readFully(in, extendedHeaderBytes);
- final int extendedHeaderCrc32 = read32(in);
+ final long extendedHeaderCrc32 = 0xffffFFFFL & read32(in);
final CRC32 crc32 = new CRC32();
crc32.update(extendedHeaderBytes);
- if (extendedHeaderCrc32 != (int)crc32.getValue()) {
+ if (extendedHeaderCrc32 != crc32.getValue()) {
throw new IOException("Extended header CRC32 verification failure");
}
extendedHeaders.add(extendedHeaderBytes);
Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/arj/LocalFileHeader.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/arj/LocalFileHeader.java?rev=1548937&r1=1548936&r2=1548937&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/arj/LocalFileHeader.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/arj/LocalFileHeader.java Sat Dec 7 16:03:54 2013
@@ -30,7 +30,7 @@ class LocalFileHeader {
int dateTimeModified;
long compressedSize;
long originalSize;
- int originalCrc32;
+ long originalCrc32;
int fileSpecPosition;
int fileAccessMode;
int firstChapter;
Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/Archive.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/Archive.java?rev=1548937&r1=1548936&r2=1548937&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/Archive.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/Archive.java Sat Dec 7 16:03:54 2013
@@ -27,7 +27,7 @@ class Archive {
/// Whether each particular packed streams has a CRC.
BitSet packCrcsDefined;
/// CRCs for each packed stream, valid only if that packed stream has one.
- int[] packCrcs;
+ long[] packCrcs;
/// Properties of solid compression blocks.
Folder[] folders;
/// Temporary properties for non-empty files (subsumed into the files array later).
Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/Folder.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/Folder.java?rev=1548937&r1=1548936&r2=1548937&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/Folder.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/Folder.java Sat Dec 7 16:03:54 2013
@@ -37,7 +37,7 @@ class Folder {
/// Whether the folder has a CRC.
boolean hasCrc;
/// The CRC, if present.
- int crc;
+ long crc;
/// The number of unpack substreams, one per non-empty file in this folder.
int numUnpackSubStreams;
Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntry.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntry.java?rev=1548937&r1=1548936&r2=1548937&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntry.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZArchiveEntry.java Sat Dec 7 16:03:54 2013
@@ -43,7 +43,7 @@ public class SevenZArchiveEntry implemen
private boolean hasWindowsAttributes;
private int windowsAttributes;
private boolean hasCrc;
- private int crc, compressedCrc;
+ private long crc, compressedCrc;
private long size, compressedSize;
public SevenZArchiveEntry() {
@@ -303,33 +303,69 @@ public class SevenZArchiveEntry implemen
/**
* Gets the CRC.
+ * @deprecated use getCrcValue instead.
*/
public int getCrc() {
- return crc;
+ return (int) crc;
}
/**
* Sets the CRC.
+ * @deprecated use setCrcValue instead.
*/
public void setCrc(int crc) {
this.crc = crc;
}
/**
+ * Gets the CRC.
+ * @since Compress 1.7
+ */
+ public long getCrcValue() {
+ return crc;
+ }
+
+ /**
+ * Sets the CRC.
+ * @since Compress 1.7
+ */
+ public void setCrcValue(long crc) {
+ this.crc = crc;
+ }
+
+ /**
* Gets the compressed CRC.
+ * @deprecated use getCompressedCrcValue instead.
*/
int getCompressedCrc() {
- return compressedCrc;
+ return (int) compressedCrc;
}
/**
* Sets the compressed CRC.
+ * @deprecated use setCompressedCrcValue instead.
*/
void setCompressedCrc(int crc) {
this.compressedCrc = crc;
}
/**
+ * Gets the compressed CRC.
+ * @since Compress 1.7
+ */
+ long getCompressedCrcValue() {
+ return compressedCrc;
+ }
+
+ /**
+ * Sets the compressed CRC.
+ * @since Compress 1.7
+ */
+ void setCompressedCrcValue(long crc) {
+ this.compressedCrc = crc;
+ }
+
+ /**
* Get this entry's file size.
*
* @return This entry's file size.
Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java?rev=1548937&r1=1548936&r2=1548937&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java Sat Dec 7 16:03:54 2013
@@ -165,7 +165,7 @@ public class SevenZFile {
archiveVersionMajor, archiveVersionMinor));
}
- final int startHeaderCrc = Integer.reverseBytes(file.readInt());
+ final long startHeaderCrc = 0xffffFFFFL & Integer.reverseBytes(file.readInt());
final StartHeader startHeader = readStartHeader(startHeaderCrc);
final int nextHeaderSizeInt = (int) startHeader.nextHeaderSize;
@@ -177,7 +177,7 @@ public class SevenZFile {
file.readFully(nextHeader);
final CRC32 crc = new CRC32();
crc.update(nextHeader);
- if (startHeader.nextHeaderCrc != (int) crc.getValue()) {
+ if (startHeader.nextHeaderCrc != crc.getValue()) {
throw new IOException("NextHeader CRC mismatch");
}
@@ -202,7 +202,7 @@ public class SevenZFile {
return archive;
}
- private StartHeader readStartHeader(final int startHeaderCrc) throws IOException {
+ private StartHeader readStartHeader(final long startHeaderCrc) throws IOException {
final StartHeader startHeader = new StartHeader();
DataInputStream dataInputStream = null;
try {
@@ -210,7 +210,7 @@ public class SevenZFile {
new BoundedRandomAccessFileInputStream(file, 20), 20, startHeaderCrc));
startHeader.nextHeaderOffset = Long.reverseBytes(dataInputStream.readLong());
startHeader.nextHeaderSize = Long.reverseBytes(dataInputStream.readLong());
- startHeader.nextHeaderCrc = Integer.reverseBytes(dataInputStream.readInt());
+ startHeader.nextHeaderCrc = 0xffffFFFFL & Integer.reverseBytes(dataInputStream.readInt());
return startHeader;
} finally {
if (dataInputStream != null) {
@@ -331,10 +331,10 @@ public class SevenZFile {
if (nid == NID.kCRC) {
archive.packCrcsDefined = readAllOrBits(header, (int)numPackStreams);
- archive.packCrcs = new int[(int)numPackStreams];
+ archive.packCrcs = new long[(int)numPackStreams];
for (int i = 0; i < (int)numPackStreams; i++) {
if (archive.packCrcsDefined.get(i)) {
- archive.packCrcs[i] = Integer.reverseBytes(header.readInt());
+ archive.packCrcs[i] = 0xffffFFFFL & Integer.reverseBytes(header.readInt());
}
}
@@ -380,7 +380,7 @@ public class SevenZFile {
for (int i = 0; i < (int)numFolders; i++) {
if (crcsDefined.get(i)) {
folders[i].hasCrc = true;
- folders[i].crc = Integer.reverseBytes(header.readInt());
+ folders[i].crc = 0xffffFFFFL & Integer.reverseBytes(header.readInt());
} else {
folders[i].hasCrc = false;
}
@@ -414,7 +414,7 @@ public class SevenZFile {
final SubStreamsInfo subStreamsInfo = new SubStreamsInfo();
subStreamsInfo.unpackSizes = new long[totalUnpackStreams];
subStreamsInfo.hasCrc = new BitSet(totalUnpackStreams);
- subStreamsInfo.crcs = new int[totalUnpackStreams];
+ subStreamsInfo.crcs = new long[totalUnpackStreams];
int nextUnpackStream = 0;
for (final Folder folder : archive.folders) {
@@ -444,10 +444,10 @@ public class SevenZFile {
if (nid == NID.kCRC) {
final BitSet hasMissingCrc = readAllOrBits(header, numDigests);
- final int[] missingCrcs = new int[numDigests];
+ final long[] missingCrcs = new long[numDigests];
for (int i = 0; i < numDigests; i++) {
if (hasMissingCrc.get(i)) {
- missingCrcs[i] = Integer.reverseBytes(header.readInt());
+ missingCrcs[i] = 0xffffFFFFL & Integer.reverseBytes(header.readInt());
}
}
int nextCrc = 0;
@@ -725,7 +725,7 @@ public class SevenZFile {
files[i].setDirectory(false);
files[i].setAntiItem(false);
files[i].setHasCrc(archive.subStreamsInfo.hasCrc.get(nonEmptyFileCounter));
- files[i].setCrc(archive.subStreamsInfo.crcs[nonEmptyFileCounter]);
+ files[i].setCrcValue(archive.subStreamsInfo.crcs[nonEmptyFileCounter]);
files[i].setSize(archive.subStreamsInfo.unpackSizes[nonEmptyFileCounter]);
++nonEmptyFileCounter;
} else {
@@ -821,7 +821,7 @@ public class SevenZFile {
currentFolderInputStream, file.getSize());
if (file.getHasCrc()) {
currentEntryInputStream = new CRC32VerifyingInputStream(
- fileStream, file.getSize(), file.getCrc());
+ fileStream, file.getSize(), file.getCrcValue());
} else {
currentEntryInputStream = fileStream;
}
Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java?rev=1548937&r1=1548936&r2=1548937&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java Sat Dec 7 16:03:54 2013
@@ -131,8 +131,8 @@ public class SevenZOutputFile {
++numNonEmptyStreams;
entry.setSize(currentOutputStream.getBytesWritten());
entry.setCompressedSize(fileBytesWritten);
- entry.setCrc((int) crc32.getValue());
- entry.setCompressedCrc((int) compressedCrc32.getValue());
+ entry.setCrcValue(crc32.getValue());
+ entry.setCompressedCrcValue(compressedCrc32.getValue());
entry.setHasCrc(true);
} else {
entry.setHasStream(false);
@@ -219,7 +219,7 @@ public class SevenZOutputFile {
final byte[] startHeaderBytes = startHeaderBaos.toByteArray();
crc32.reset();
crc32.update(startHeaderBytes);
- file.writeInt(Integer.reverseBytes((int)crc32.getValue()));
+ file.writeInt(Integer.reverseBytes((int) crc32.getValue()));
file.write(startHeaderBytes);
}
@@ -299,7 +299,7 @@ public class SevenZOutputFile {
header.write(1);
for (final SevenZArchiveEntry entry : files) {
if (entry.hasStream()) {
- header.writeInt(Integer.reverseBytes(entry.getCompressedCrc()));
+ header.writeInt(Integer.reverseBytes((int) entry.getCompressedCrcValue()));
}
}
@@ -327,7 +327,7 @@ public class SevenZOutputFile {
header.write(1);
for (final SevenZArchiveEntry entry : files) {
if (entry.hasStream()) {
- header.writeInt(Integer.reverseBytes(entry.getCrc()));
+ header.writeInt(Integer.reverseBytes((int) entry.getCrcValue()));
}
}
Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/StartHeader.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/StartHeader.java?rev=1548937&r1=1548936&r2=1548937&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/StartHeader.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/StartHeader.java Sat Dec 7 16:03:54 2013
@@ -20,5 +20,5 @@ package org.apache.commons.compress.arch
class StartHeader {
long nextHeaderOffset;
long nextHeaderSize;
- int nextHeaderCrc;
+ long nextHeaderCrc;
}
Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SubStreamsInfo.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SubStreamsInfo.java?rev=1548937&r1=1548936&r2=1548937&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SubStreamsInfo.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SubStreamsInfo.java Sat Dec 7 16:03:54 2013
@@ -26,5 +26,5 @@ class SubStreamsInfo {
/// Whether CRC is present for each unpacked stream.
BitSet hasCrc;
/// CRCs of unpacked streams, if present.
- int[] crcs;
+ long[] crcs;
}
Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/utils/CRC32VerifyingInputStream.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/utils/CRC32VerifyingInputStream.java?rev=1548937&r1=1548936&r2=1548937&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/utils/CRC32VerifyingInputStream.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/utils/CRC32VerifyingInputStream.java Sat Dec 7 16:03:54 2013
@@ -30,10 +30,10 @@ import java.util.zip.CRC32;
public class CRC32VerifyingInputStream extends InputStream {
private final InputStream in;
private long bytesRemaining;
- private final int expectedCrc32;
+ private final long expectedCrc32;
private final CRC32 crc32 = new CRC32();
- public CRC32VerifyingInputStream(final InputStream in, final long size, final int expectedCrc32) {
+ public CRC32VerifyingInputStream(final InputStream in, final long size, final long expectedCrc32) {
this.in = in;
this.expectedCrc32 = expectedCrc32;
this.bytesRemaining = size;
@@ -55,7 +55,7 @@ public class CRC32VerifyingInputStream e
crc32.update(ret);
--bytesRemaining;
}
- if (bytesRemaining == 0 && expectedCrc32 != (int)crc32.getValue()) {
+ if (bytesRemaining == 0 && expectedCrc32 != crc32.getValue()) {
throw new IOException("CRC32 verification failed");
}
return ret;
@@ -85,7 +85,7 @@ public class CRC32VerifyingInputStream e
crc32.update(b, off, ret);
bytesRemaining -= ret;
}
- if (bytesRemaining <= 0 && expectedCrc32 != (int)crc32.getValue()) {
+ if (bytesRemaining <= 0 && expectedCrc32 != crc32.getValue()) {
throw new IOException("CRC32 verification failed");
}
return ret;