Author: bodewig
Date: Fri Feb 6 08:59:14 2009
New Revision: 741476
URL: http://svn.apache.org/viewvc?rev=741476&view=rev
Log:
use length of signature read when trying to match input stream formats
Modified:
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveInputStream.java
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/jar/JarArchiveInputStream.java
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
Modified:
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java
URL:
http://svn.apache.org/viewvc/commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java?rev=741476&r1=741475&r2=741476&view=diff
==============================================================================
---
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java
(original)
+++
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java
Fri Feb 6 08:59:14 2009
@@ -82,18 +82,17 @@
input.mark(signature.length);
int signatureLength = input.read(signature);
// TODO if reset is not supported pass on the IOException or return
null?
- // TODO, what if we failed to read 12 bytes?
input.reset();
- if(ZipArchiveInputStream.matches(signature)) {
+ if(ZipArchiveInputStream.matches(signature, signatureLength)) {
return new ZipArchiveInputStream(input);
- } else if(JarArchiveInputStream.matches(signature)) {
+ } else if(JarArchiveInputStream.matches(signature, signatureLength)) {
return new JarArchiveInputStream(input);
- } else if(TarArchiveInputStream.matches(signature)) {
+ } else if(TarArchiveInputStream.matches(signature, signatureLength)) {
return new TarArchiveInputStream(input);
- } else if(ArArchiveInputStream.matches(signature)) {
+ } else if(ArArchiveInputStream.matches(signature, signatureLength)) {
return new ArArchiveInputStream(input);
- } else if(CpioArchiveInputStream.matches(signature)) {
+ } else if(CpioArchiveInputStream.matches(signature, signatureLength)) {
return new CpioArchiveInputStream(input);
}
return null;
Modified:
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveInputStream.java
URL:
http://svn.apache.org/viewvc/commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveInputStream.java?rev=741476&r1=741475&r2=741476&view=diff
==============================================================================
---
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveInputStream.java
(original)
+++
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveInputStream.java
Fri Feb 6 08:59:14 2009
@@ -108,9 +108,12 @@
return ret;
}
- public static boolean matches( byte[] signature ) {
+ public static boolean matches(byte[] signature, int length) {
// 3c21 7261 6863 0a3e
+ if (length < 8) {
+ return false;
+ }
if (signature[0] != 0x21) {
return false;
}
Modified:
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java
URL:
http://svn.apache.org/viewvc/commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java?rev=741476&r1=741475&r2=741476&view=diff
==============================================================================
---
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java
(original)
+++
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java
Fri Feb 6 08:59:14 2009
@@ -442,9 +442,12 @@
return (ArchiveEntry)entry;
}
- public static boolean matches( byte[] signature ) {
+ public static boolean matches(byte[] signature, int length) {
// 3037 3037 30
+ if (length < 5) {
+ return false;
+ }
if (signature[0] != 0x30) {
return false;
}
Modified:
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/jar/JarArchiveInputStream.java
URL:
http://svn.apache.org/viewvc/commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/jar/JarArchiveInputStream.java?rev=741476&r1=741475&r2=741476&view=diff
==============================================================================
---
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/jar/JarArchiveInputStream.java
(original)
+++
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/jar/JarArchiveInputStream.java
Fri Feb 6 08:59:14 2009
@@ -40,9 +40,13 @@
}
}
- public static boolean matches( byte[] signature ) {
+ public static boolean matches(byte[] signature, int length ) {
// 4b50 0403 0014 0008
+ if (length < 8) {
+ return false;
+ }
+
if (signature[0] != 0x50) {
return false;
}
Modified:
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java
URL:
http://svn.apache.org/viewvc/commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java?rev=741476&r1=741475&r2=741476&view=diff
==============================================================================
---
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java
(original)
+++
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java
Fri Feb 6 08:59:14 2009
@@ -44,9 +44,13 @@
return in.read();
}
- public static boolean matches( byte[] signature ) {
+ public static boolean matches(byte[] signature, int length) {
// 6574 7473 2e31 6d78
+ if (length < 8) {
+ return false;
+ }
+
if (signature[0] != 0x74) {
return false;
}
Modified:
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
URL:
http://svn.apache.org/viewvc/commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java?rev=741476&r1=741475&r2=741476&view=diff
==============================================================================
---
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
(original)
+++
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
Fri Feb 6 08:59:14 2009
@@ -53,6 +53,10 @@
public static boolean matches( byte[] signature, int length ) {
// 4b50 0403 0014 0000
+ if (length < 8) {
+ return false;
+ }
+
if (signature[0] != 0x50) {
return false;
}