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