You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by lf...@apache.org on 2018/03/08 11:31:40 UTC

[tika] branch master updated: TIKA-2568: detection of full encrypted 7z files

This is an automated email from the ASF dual-hosted git repository.

lfcnassif pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tika.git


The following commit(s) were added to refs/heads/master by this push:
     new fcfd4e1  TIKA-2568: detection of full encrypted 7z files
fcfd4e1 is described below

commit fcfd4e15fea1ba25a608b1d1b80147434985365e
Author: Nassif <na...@dpf.gov.br>
AuthorDate: Wed Mar 7 23:31:18 2018 -0300

    TIKA-2568: detection of full encrypted 7z files
---
 CHANGES.txt                                              |   2 ++
 .../java/org/apache/tika/parser/pkg/PackageParser.java   |  12 ++++++++----
 .../org/apache/tika/parser/pkg/Seven7ParserTest.java     |  15 +++++++++++++++
 .../src/test/resources/test-documents/full_encrypted.7z  | Bin 0 -> 198 bytes
 4 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index 4414fac..fde1137 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -4,6 +4,8 @@ Release 2.0.0 - ???
    * Remove deprecated Metadata keys/properties (TIKA-1974).
 
    Other changes
+   
+   * Detection of full encrypted 7z files (TIKA-2568)
 
    * Various new mimes and typo fixes in tika-mimetypes.xml
      via Andreas Meier (TIKA-2527).
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/pkg/PackageParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/pkg/PackageParser.java
index 14dd588..b1e0f93 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/pkg/PackageParser.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/pkg/PackageParser.java
@@ -252,10 +252,14 @@ public class PackageParser extends AbstractParser {
                 }
                 
                 SevenZFile sevenz;
-                if (password == null) {
-                    sevenz = new SevenZFile(tstream.getFile());
-                } else {
-                    sevenz = new SevenZFile(tstream.getFile(), password.getBytes("UnicodeLittleUnmarked"));
+                try{
+                    if (password == null) {
+                        sevenz = new SevenZFile(tstream.getFile());
+                    } else {
+                        sevenz = new SevenZFile(tstream.getFile(), password.getBytes("UnicodeLittleUnmarked"));
+                    }
+                }catch(PasswordRequiredException e){
+                    throw new EncryptedDocumentException(e);
                 }
                 
                 // Pending a fix for COMPRESS-269 / TIKA-1525, this bit is a little nasty
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/pkg/Seven7ParserTest.java b/tika-parsers/src/test/java/org/apache/tika/parser/pkg/Seven7ParserTest.java
index afbb975..cc958c0 100644
--- a/tika-parsers/src/test/java/org/apache/tika/parser/pkg/Seven7ParserTest.java
+++ b/tika-parsers/src/test/java/org/apache/tika/parser/pkg/Seven7ParserTest.java
@@ -141,6 +141,21 @@ public class Seven7ParserTest extends AbstractPkgTest {
         }
         
         assertTrue("test no password", ex);
+        
+        // No password, will fail with EncryptedDocumentException
+        ex = false;
+        try (InputStream stream = Seven7ParserTest.class.getResourceAsStream(
+                "/test-documents/full_encrypted.7z")) {
+            parser.parse(stream, handler, metadata, recursingContext);
+            fail("Shouldn't be able to read a full password protected 7z without the password");
+        } catch (EncryptedDocumentException e) {
+            // Good
+            ex = true;
+        } catch (Exception e){
+            ex = false;
+        }
+        
+        assertTrue("test no password for full encrypted 7z", ex);
 
         ex = false;
         
diff --git a/tika-parsers/src/test/resources/test-documents/full_encrypted.7z b/tika-parsers/src/test/resources/test-documents/full_encrypted.7z
new file mode 100644
index 0000000..60b5735
Binary files /dev/null and b/tika-parsers/src/test/resources/test-documents/full_encrypted.7z differ

-- 
To stop receiving notification emails like this one, please contact
lfcnassif@apache.org.