Author: tilman
Date: Tue Sep 15 10:18:29 2026
New Revision: 1938234

Log:
PDFBOX-6266: avoid stack overflow with type 3 streams

Modified:
   
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java
      Tue Sep 15 10:18:25 2026        (r1938233)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java
      Tue Sep 15 10:18:29 2026        (r1938234)
@@ -877,10 +877,24 @@ public abstract class PDFStreamEngine
     protected void showType3Glyph(Matrix textRenderingMatrix, PDType3Font 
font, int code,
             Vector displacement) throws IOException
     {
-        PDType3CharProc charProc = font.getCharProc(code);
-        if (charProc != null)
+        try
         {
-            processType3Stream(charProc, textRenderingMatrix);
+            increaseLevel();
+            if (getLevel() > 50)
+            {
+                LOG.error("recursion is too deep, skipping Type3 glyph");
+                return;
+            }
+                
+            PDType3CharProc charProc = font.getCharProc(code);
+            if (charProc != null)
+            {
+                processType3Stream(charProc, textRenderingMatrix);
+            }
+        }
+        finally
+        {
+            decreaseLevel();
         }
     }
 

Reply via email to