You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2014/05/14 18:57:37 UTC

svn commit: r1594639 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java

Author: lehmi
Date: Wed May 14 16:57:37 2014
New Revision: 1594639

URL: http://svn.apache.org/r1594639
Log:
PDFBOX-1895: decrypt dictionaries recursive

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java?rev=1594639&r1=1594638&r2=1594639&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java Wed May 14 16:57:37 2014
@@ -449,15 +449,15 @@ public abstract class SecurityHandler
         for (Map.Entry<COSName, COSBase> entry : dictionary.entrySet())
         {
             COSBase value = entry.getValue();
-            // within a dictionary only strings and streams have to be decrypted
-            if (value instanceof COSString || value instanceof COSStream || value instanceof COSArray)
+            // within a dictionary only the following kind of COS objects have to be decrypted
+            if (value instanceof COSString || value instanceof COSStream || value instanceof COSArray || value instanceof COSDictionary)
             {
                 // if we are a signature dictionary and contain a Contents entry then
                 // we don't decrypt it.
-                if (!(entry.getKey().getName().equals("Contents") && value instanceof COSString && potentialSignatures
+                if (!(entry.getKey().equals(COSName.CONTENTS) && value instanceof COSString && potentialSignatures
                         .contains(dictionary)))
                 {
-                    decrypt(entry.getValue(), objNum, genNum);
+                    decrypt(value, objNum, genNum);
                 }
             }
         }