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/11/05 19:19:25 UTC

svn commit: r1636933 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java

Author: lehmi
Date: Wed Nov  5 18:19:25 2014
New Revision: 1636933

URL: http://svn.apache.org/r1636933
Log:
PDFBOX-2469: the signature dictionary must not be decrypted

Modified:
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java   (contents, props changed)

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java?rev=1636933&r1=1636932&r2=1636933&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java Wed Nov  5 18:19:25 2014
@@ -1443,28 +1443,30 @@ public class NonSequentialPDFParser exte
                     }
                     else if (pb instanceof COSDictionary)
                     {
-                        for (Entry<COSName, COSBase> entry : ((COSDictionary) pb).entrySet())
+                        COSDictionary dict = (COSDictionary) pb;
+                        // skip signature dictionary
+                        if (!dict.getItem(COSName.TYPE).equals(COSName.SIG))
                         {
-                            // TODO: specially handle 'Contents' entry of
-                            // signature dictionary like in
-                            // SecurityHandler#decryptDictionary
-                            if (entry.getValue() instanceof COSString)
+                            for (Entry<COSName, COSBase> entry : dict.entrySet())
                             {
-                                decrypt((COSString) entry.getValue(), objNr, objGenNr);
-                            }
-                            else if (entry.getValue() instanceof COSArray)
-                            {
-                                try
+                                if (entry.getValue() instanceof COSString)
                                 {
-                                    securityHandler.decryptArray((COSArray) entry.getValue(), objNr, objGenNr);
+                                    decrypt((COSString) entry.getValue(), objNr, objGenNr);
                                 }
-                                catch (CryptographyException ce)
+                                else if (entry.getValue() instanceof COSArray)
                                 {
-                                    throw new IOException("Error decrypting stream object " + objNr + ": "
-                                            + ce.getMessage()
-                                    /* , ce // TODO: remove remark with Java 1.6 */);
-                                }
-                            }                             
+                                    try
+                                    {
+                                        securityHandler.decryptArray((COSArray) entry.getValue(), objNr, objGenNr);
+                                    }
+                                    catch (CryptographyException ce)
+                                    {
+                                        throw new IOException("Error decrypting stream object " + objNr + ": "
+                                                + ce.getMessage()
+                                        /* , ce // TODO: remove remark with Java 1.6 */);
+                                    }
+                                }                             
+                            }
                         }
                     }
                     else if (pb instanceof COSArray)

Propchange: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java
------------------------------------------------------------------------------
  Merged /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java:r1636929