Author: tilman
Date: Wed Aug 20 09:35:59 2025
New Revision: 1927911

Log:
PDFBOX-6053: catch negative MCID

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

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDMarkedContentReference.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDMarkedContentReference.java
       Wed Aug 20 09:35:54 2025        (r1927910)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDMarkedContentReference.java
       Wed Aug 20 09:35:59 2025        (r1927911)
@@ -102,6 +102,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/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElementTest.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElementTest.java
 Wed Aug 20 09:35:54 2025        (r1927910)
+++ 
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElementTest.java
 Wed Aug 20 09:35:59 2025        (r1927911)
@@ -195,7 +195,16 @@ public class PDStructureElementTest
         PDMarkedContent mc2 = PDMarkedContent.create(COSName.S, 
mcr2.getCOSObject());
         structureElement.appendKid(mc2);
         PDMarkedContentReference mcrSubZero = new PDMarkedContentReference();
-        mcrSubZero.setMCID(-1); //TODO should fail
+        try
+        {
+            mcrSubZero.setMCID(-1);
+            fail("Should have thrown IllegalArgumentException");
+        }
+        catch (IllegalArgumentException ex)
+        {
+            // ok
+        }
+        mcrSubZero.getCOSObject().setInt(COSName.MCID, -1);
         PDMarkedContent mcSubZero = PDMarkedContent.create(COSName.S, 
mcrSubZero.getCOSObject());
         try
         {

Reply via email to