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/07/30 08:24:40 UTC
svn commit: r1936712 - pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fixup/processor
Author: tilman
Date: Thu Jul 30 08:24:39 2026
New Revision: 1936712
Log:
PDFBOX-6227: catch cycle
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fixup/processor/AcroFormOrphanWidgetsProcessor.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fixup/processor/AcroFormOrphanWidgetsProcessor.java
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fixup/processor/AcroFormOrphanWidgetsProcessor.java Thu Jul 30 06:54:59 2026 (r1936711)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fixup/processor/AcroFormOrphanWidgetsProcessor.java Thu Jul 30 08:24:39 2026 (r1936712)
@@ -19,8 +19,10 @@ package org.apache.pdfbox.pdmodel.fixup.
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
@@ -188,8 +190,14 @@ public class AcroFormOrphanWidgetsProces
*/
private PDField resolveNonRootField(PDAcroForm acroForm, COSDictionary parent, Map<String, PDField> nonTerminalFieldsMap)
{
+ Set<COSDictionary> visited = new HashSet<>();
while (parent.containsKey(COSName.PARENT))
{
+ if (!visited.add(parent))
+ {
+ LOG.warn("Field ignored: {}", parent);
+ return null; // Cycle detected
+ }
parent = parent.getCOSDictionary(COSName.PARENT);
if (parent == null)
{