Author: tilman
Date: Thu Jul 30 08:24:47 2026
New Revision: 1936714

Log:
PDFBOX-6227: catch cycle

Modified:
   
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fixup/processor/AcroFormOrphanWidgetsProcessor.java

Modified: 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fixup/processor/AcroFormOrphanWidgetsProcessor.java
==============================================================================
--- 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fixup/processor/AcroFormOrphanWidgetsProcessor.java
      Thu Jul 30 08:24:43 2026        (r1936713)
+++ 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fixup/processor/AcroFormOrphanWidgetsProcessor.java
      Thu Jul 30 08:24:47 2026        (r1936714)
@@ -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.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -195,8 +197,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)
             {

Reply via email to