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 2021/12/24 16:45:47 UTC

svn commit: r1896365 - /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Parser.java

Author: lehmi
Date: Fri Dec 24 16:45:47 2021
New Revision: 1896365

URL: http://svn.apache.org/viewvc?rev=1896365&view=rev
Log:
PDFBOX-5339: add null check, throw IOException instead

Modified:
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Parser.java

Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Parser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Parser.java?rev=1896365&r1=1896364&r2=1896365&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Parser.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/type1/Type1Parser.java Fri Dec 24 16:45:47 2021
@@ -419,6 +419,10 @@ final class Type1Parser
 
     private void readPostScriptWrapper(List<Token> value) throws IOException
     {
+        if (lexer.peekToken() == null)
+        {
+            throw new IOException("Missing start token for the system dictionary");
+        }
         // postscript wrapper (not in the Type 1 spec)
         if (lexer.peekToken().getText().equals("systemdict"))
         {
@@ -455,6 +459,11 @@ final class Type1Parser
         int openProc = 1;
         while (true)
         {
+            if (lexer.peekToken() == null)
+            {
+                throw new IOException("Malformed procedure: missing token");
+            }
+
             if (lexer.peekToken().getKind() == Token.START_PROC)
             {
                 openProc++;
@@ -489,6 +498,10 @@ final class Type1Parser
         int openProc = 1;
         while (true)
         {
+            if (lexer.peekToken() == null)
+            {
+                throw new IOException("Malformed procedure: missing token");
+            }
             if (lexer.peekToken().getKind() == Token.START_PROC)
             {
                 openProc++;
@@ -714,6 +727,10 @@ final class Type1Parser
     // OtherSubrs are embedded PostScript procedures which we can safely ignore
     private void readOtherSubrs() throws IOException
     {
+        if (lexer.peekToken() == null)
+        {
+            throw new IOException("Missing start token of OtherSubrs procedure");
+        }
         if (lexer.peekToken().getKind() == Token.START_ARRAY)
         {
             readValue();
@@ -852,7 +869,7 @@ final class Type1Parser
     private void read(Token.Kind kind, String name) throws IOException
     {
         Token token = read(kind);
-        if (!token.getText().equals(name))
+        if (token == null || token.getText() == null || !token.getText().equals(name))
         {
             throw new IOException("Found " + token + " but expected " + name);
         }