Author: msahyoun
Date: Fri Feb 23 07:04:27 2018
New Revision: 1825112

URL: http://svn.apache.org/viewvc?rev=1825112&view=rev
Log:
PDFBOX-4122: add test where index data could be null - malformed CFF only; 
setting expected number of char strings to 0

Modified:
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java

Modified: 
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java?rev=1825112&r1=1825111&r2=1825112&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java 
(original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java 
Fri Feb 23 07:04:27 2018
@@ -519,7 +519,19 @@ public class CFFParser
         // format-specific dictionaries
         if (isCIDFont)
         {
-            parseCIDFontDicts(input, topDict, (CFFCIDFont) font, 
charStringsIndex.length);
+
+            // CharStrings index could be null if the index data couldn't be 
read
+            int numEntries = 0;
+            if (charStringsIndex == null)
+            {
+                LOG.debug("Couldn't read CharStrings index - parsing 
CIDFontDicts with number of char strings set to 0");
+            }
+            else
+            {
+                numEntries = charStringsIndex.length;
+            }
+
+            parseCIDFontDicts(input, topDict, (CFFCIDFont) font, numEntries);
 
             List<Number> privMatrix = null;
             List<Map<String, Object>> fontDicts = ((CFFCIDFont) 
font).getFontDicts();

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1825112&r1=1825111&r2=1825112&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java 
Fri Feb 23 07:04:27 2018
@@ -506,22 +506,22 @@ public class COSWriter implements ICOSVi
      */
     public void doWriteObject( COSBase obj ) throws IOException
     {
-        writtenObjects.add( obj );
-        // find the physical reference
-        currentObjectKey = getObjectKey( obj );
-        // add a x ref entry
-        addXRefEntry( new COSWriterXRefEntry(getStandardOutput().getPos(), 
obj, currentObjectKey));
-        // write the object
-        
getStandardOutput().write(String.valueOf(currentObjectKey.getNumber()).getBytes(Charsets.ISO_8859_1));
-        getStandardOutput().write(SPACE);
-        
getStandardOutput().write(String.valueOf(currentObjectKey.getGeneration()).getBytes(Charsets.ISO_8859_1));
-        getStandardOutput().write(SPACE);
-        getStandardOutput().write(OBJ);
-        getStandardOutput().writeEOL();
-        obj.accept( this );
-        getStandardOutput().writeEOL();
-        getStandardOutput().write(ENDOBJ);
-        getStandardOutput().writeEOL();
+            writtenObjects.add( obj );
+            // find the physical reference
+            currentObjectKey = getObjectKey( obj );
+            // add a x ref entry
+            addXRefEntry( new COSWriterXRefEntry(getStandardOutput().getPos(), 
obj, currentObjectKey));
+            // write the object
+            
getStandardOutput().write(String.valueOf(currentObjectKey.getNumber()).getBytes(Charsets.ISO_8859_1));
+            getStandardOutput().write(SPACE);
+            
getStandardOutput().write(String.valueOf(currentObjectKey.getGeneration()).getBytes(Charsets.ISO_8859_1));
+            getStandardOutput().write(SPACE);
+            getStandardOutput().write(OBJ);
+            getStandardOutput().writeEOL();
+            obj.accept( this );
+            getStandardOutput().writeEOL();
+            getStandardOutput().write(ENDOBJ);
+            getStandardOutput().writeEOL();
     }
 
     /**
@@ -1179,12 +1179,12 @@ public class COSWriter implements ICOSVi
      */
     public void writeReference(COSBase obj) throws IOException
     {
-        COSObjectKey key = getObjectKey(obj);
-        
getStandardOutput().write(String.valueOf(key.getNumber()).getBytes(Charsets.ISO_8859_1));
-        getStandardOutput().write(SPACE);
-        
getStandardOutput().write(String.valueOf(key.getGeneration()).getBytes(Charsets.ISO_8859_1));
-        getStandardOutput().write(SPACE);
-        getStandardOutput().write(REFERENCE);
+            COSObjectKey key = getObjectKey(obj);
+            
getStandardOutput().write(String.valueOf(key.getNumber()).getBytes(Charsets.ISO_8859_1));
+            getStandardOutput().write(SPACE);
+            
getStandardOutput().write(String.valueOf(key.getGeneration()).getBytes(Charsets.ISO_8859_1));
+            getStandardOutput().write(SPACE);
+            getStandardOutput().write(REFERENCE);
     }
 
     @Override


Reply via email to