You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2026/09/15 10:18:25 UTC
svn commit: r1938233 - pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream
Author: tilman
Date: Tue Sep 15 10:18:25 2026
New Revision: 1938233
Log:
PDFBOX-6266: avoid stack overflow with type 3 streams
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java Tue Sep 15 10:18:22 2026 (r1938232)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java Tue Sep 15 10:18:25 2026 (r1938233)
@@ -925,10 +925,23 @@ public abstract class PDFStreamEngine
protected void showType3Glyph(Matrix textRenderingMatrix, PDType3Font font, int code,
String unicode, 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();
}
}