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)
{