Author: tilman
Date: Wed Aug 20 09:35:49 2025
New Revision: 1927909

Log:
PDFBOX-6053: catch negative MCID

Modified:
   
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDMarkedContentReference.java
   
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElementTest.java

Modified: 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDMarkedContentReference.java
==============================================================================
--- 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDMarkedContentReference.java
       Wed Aug 20 08:49:01 2025        (r1927908)
+++ 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDMarkedContentReference.java
       Wed Aug 20 09:35:49 2025        (r1927909)
@@ -98,6 +98,10 @@ public class PDMarkedContentReference im
      */
     public void setMCID(int mcid)
     {
+        if (mcid < 0)
+        {
+            throw new IllegalArgumentException("MCID is negative");
+        }
         this.getCOSObject().setInt(COSName.MCID, mcid);
     }
 

Modified: 
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElementTest.java
==============================================================================
--- 
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElementTest.java
 Wed Aug 20 08:49:01 2025        (r1927908)
+++ 
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElementTest.java
 Wed Aug 20 09:35:49 2025        (r1927909)
@@ -178,7 +178,8 @@ class PDStructureElementTest
         PDMarkedContent mc2 = PDMarkedContent.create(COSName.S, 
mcr2.getCOSObject());
         structureElement.appendKid(mc2);
         PDMarkedContentReference mcrSubZero = new PDMarkedContentReference();
-        mcrSubZero.setMCID(-1); //TODO should fail
+        assertThrows(IllegalArgumentException.class, () -> 
mcrSubZero.setMCID(-1));
+        mcrSubZero.getCOSObject().setInt(COSName.MCID, -1);
         PDMarkedContent mcSubZero = PDMarkedContent.create(COSName.S, 
mcrSubZero.getCOSObject());
         assertThrows(IllegalArgumentException.class, () -> 
structureElement.appendKid(mcSubZero));
         List<Object> kids = structureElement.getKids();

Reply via email to