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 2014/02/22 19:58:22 UTC
svn commit: r1570881 - in /commons/proper/compress/trunk/src:
main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
Author: bodewig
Date: Sat Feb 22 18:58:21 2014
New Revision: 1570881
URL: http://svn.apache.org/r1570881
Log:
COMPRESS-267 add a matches method to SevenZFile
Modified:
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
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=1570881&r1=1570880&r2=1570881&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 Feb 22 18:58:21 2014
@@ -908,4 +908,27 @@ public class SevenZFile implements Close
}
return value;
}
+
+ /**
+ * Checks if the signature matches what is expected for a 7z file.
+ *
+ * @param signature
+ * the bytes to check
+ * @param length
+ * the number of bytes to check
+ * @return true, if this is the signature of a 7z archive.
+ * @since 1.8
+ */
+ public static boolean matches(byte[] signature, int length) {
+ if (length < sevenZSignature.length) {
+ return false;
+ }
+
+ for (int i = 0; i < sevenZSignature.length; i++) {
+ if (signature[i] != sevenZSignature[i]) {
+ return false;
+ }
+ }
+ return true;
+ }
}
Modified: commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java?rev=1570881&r1=1570880&r2=1570881&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java (original)
+++ commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java Sat Feb 22 18:58:21 2014
@@ -88,6 +88,20 @@ public class SevenZFileTest extends Abst
}
}
+ public void testSignatureCheck() {
+ assertTrue(SevenZFile.matches(SevenZFile.sevenZSignature,
+ SevenZFile.sevenZSignature.length));
+ assertTrue(SevenZFile.matches(SevenZFile.sevenZSignature,
+ SevenZFile.sevenZSignature.length + 1));
+ assertFalse(SevenZFile.matches(SevenZFile.sevenZSignature,
+ SevenZFile.sevenZSignature.length - 1));
+ assertFalse(SevenZFile.matches(new byte[] { 1, 2, 3, 4, 5, 6 }, 6));
+ assertTrue(SevenZFile.matches(new byte[] { '7', 'z', (byte) 0xBC,
+ (byte) 0xAF, 0x27, 0x1C}, 6));
+ assertFalse(SevenZFile.matches(new byte[] { '7', 'z', (byte) 0xBC,
+ (byte) 0xAF, 0x27, 0x1D}, 6));
+ }
+
private void test7zUnarchive(File f, byte[] password) throws Exception {
SevenZFile sevenZFile = new SevenZFile(f, password);
try {