Author: tilman
Date: Wed Sep  3 18:49:56 2025
New Revision: 1928217

Log:
PDFBOX-6059: avoid ClassCastException

Modified:
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageTree.java
   
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/PDUserAttributeObject.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/prepress/PDBoxStyle.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDArtifactMarkedContent.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDLayoutAttributeObject.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDStandardAttributeObject.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PDCryptFilterDictionary.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PDEncryption.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontDescriptor.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3CharProc.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCIEDictionaryBasedColorSpace.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCalRGB.java

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageTree.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageTree.java
  Wed Sep  3 18:44:49 2025        (r1928216)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageTree.java
  Wed Sep  3 18:49:56 2025        (r1928217)
@@ -490,7 +490,7 @@ public class PDPageTree implements COSOb
     {
         // remove from parent's kids
         COSDictionary parent = (COSDictionary) 
node.getDictionaryObject(COSName.PARENT, COSName.P);
-        COSArray kids = (COSArray)parent.getDictionaryObject(COSName.KIDS);
+        COSArray kids = parent.getCOSArray(COSName.KIDS);
         if (kids.removeObject(node))
         {
             // update ancestor counts

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 Sep  3 18:44:49 2025        (r1928216)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDMarkedContentReference.java
       Wed Sep  3 18:49:56 2025        (r1928217)
@@ -67,7 +67,7 @@ public class PDMarkedContentReference im
      */
     public PDPage getPage()
     {
-        COSDictionary pg = (COSDictionary) 
this.getCOSObject().getDictionaryObject(COSName.PG);
+        COSDictionary pg = this.getCOSObject().getCOSDictionary(COSName.PG);
         if (pg != null)
         {
             return new PDPage(pg);

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDUserAttributeObject.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDUserAttributeObject.java
  Wed Sep  3 18:44:49 2025        (r1928216)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDUserAttributeObject.java
  Wed Sep  3 18:49:56 2025        (r1928217)
@@ -95,7 +95,7 @@ public class PDUserAttributeObject exten
      */
     public void addUserProperty(PDUserProperty userProperty)
     {
-        COSArray p = (COSArray) 
this.getCOSObject().getDictionaryObject(COSName.P);
+        COSArray p = this.getCOSObject().getCOSArray(COSName.P);
         p.add(userProperty);
         this.notifyChanged();
     }
@@ -111,7 +111,7 @@ public class PDUserAttributeObject exten
         {
             return;
         }
-        COSArray p = (COSArray) 
this.getCOSObject().getDictionaryObject(COSName.P);
+        COSArray p = this.getCOSObject().getCOSArray(COSName.P);
         p.remove(userProperty.getCOSObject());
         this.notifyChanged();
     }

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/prepress/PDBoxStyle.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/prepress/PDBoxStyle.java
     Wed Sep  3 18:44:49 2025        (r1928216)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/prepress/PDBoxStyle.java
     Wed Sep  3 18:49:56 2025        (r1928217)
@@ -81,7 +81,7 @@ public class PDBoxStyle implements COSOb
      */
     public PDColor getGuidelineColor()
     {
-        COSArray colorValues = (COSArray) 
dictionary.getDictionaryObject(COSName.C);
+        COSArray colorValues = dictionary.getCOSArray(COSName.C);
         if( colorValues == null )
         {
             colorValues = new COSArray();
@@ -163,7 +163,7 @@ public class PDBoxStyle implements COSOb
     public PDLineDashPattern getLineDashPattern()
     {
         PDLineDashPattern pattern;
-        COSArray d = (COSArray) dictionary.getDictionaryObject(COSName.D);
+        COSArray d = dictionary.getCOSArray(COSName.D);
         if( d == null )
         {
             d = new COSArray();

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDArtifactMarkedContent.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDArtifactMarkedContent.java
       Wed Sep  3 18:44:49 2025        (r1928216)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDArtifactMarkedContent.java
       Wed Sep  3 18:49:56 2025        (r1928217)
@@ -55,8 +55,7 @@ public class PDArtifactMarkedContent ext
     public PDRectangle getBBox()
     {
         PDRectangle retval = null;
-        COSArray a = (COSArray) this.getProperties().getDictionaryObject(
-            COSName.BBOX);
+        COSArray a = this.getProperties().getCOSArray(COSName.BBOX);
         if (a != null)
         {
             retval = new PDRectangle(a);
@@ -128,8 +127,7 @@ public class PDArtifactMarkedContent ext
      */
     private boolean isAttached(String edge)
     {
-        COSArray a = (COSArray) this.getProperties().getDictionaryObject(
-            COSName.ATTACHED);
+        COSArray a = this.getProperties().getCOSArray(COSName.ATTACHED);
         if (a != null)
         {
             for (int i = 0; i < a.size(); i++)

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDLayoutAttributeObject.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDLayoutAttributeObject.java
       Wed Sep  3 18:44:49 2025        (r1928216)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDLayoutAttributeObject.java
       Wed Sep  3 18:49:56 2025        (r1928217)
@@ -840,11 +840,10 @@ public class PDLayoutAttributeObject ext
      */
     public PDRectangle getBBox()
     {
-        COSArray array =
-            (COSArray) this.getCOSObject().getDictionaryObject(BBOX);
-        if (array != null)
+        COSBase base = this.getCOSObject().getDictionaryObject(BBOX);
+        if (base instanceof COSArray)
         {
-            return new PDRectangle(array);
+            return new PDRectangle((COSArray) base);
         }
         return null;
     }

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDStandardAttributeObject.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDStandardAttributeObject.java
     Wed Sep  3 18:44:49 2025        (r1928216)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDStandardAttributeObject.java
     Wed Sep  3 18:49:56 2025        (r1928217)
@@ -383,10 +383,10 @@ public abstract class PDStandardAttribut
      */
     protected PDGamma getColor(String name)
     {
-        COSArray c = (COSArray) this.getCOSObject().getDictionaryObject(name);
-        if (c != null)
+        COSBase base = this.getCOSObject().getDictionaryObject(name);
+        if (base instanceof COSArray)
         {
-            return new PDGamma(c);
+            return new PDGamma((COSArray) base);
         }
         return null;
     }
@@ -399,12 +399,12 @@ public abstract class PDStandardAttribut
      */
     protected Object getColorOrFourColors(String name)
     {
-        COSArray array =
-            (COSArray) this.getCOSObject().getDictionaryObject(name);
-        if (array == null)
+        COSBase base = this.getCOSObject().getDictionaryObject(name);
+        if (!(base instanceof COSArray))
         {
             return null;
         }
+        COSArray array = (COSArray) base;
         if (array.size() == 3)
         {
             // only one colour

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PDCryptFilterDictionary.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PDCryptFilterDictionary.java
  Wed Sep  3 18:44:49 2025        (r1928216)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PDCryptFilterDictionary.java
  Wed Sep  3 18:49:56 2025        (r1928217)
@@ -118,7 +118,7 @@ public class PDCryptFilterDictionary imp
      */
     public COSName getCryptFilterMethod()
     {
-        return (COSName)cryptFilterDictionary.getDictionaryObject( COSName.CFM 
);
+        return cryptFilterDictionary.getCOSName(COSName.CFM);
     }
 
     /**

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PDEncryption.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PDEncryption.java
     Wed Sep  3 18:44:49 2025        (r1928216)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PDEncryption.java
     Wed Sep  3 18:49:56 2025        (r1928217)
@@ -577,7 +577,7 @@ public class PDEncryption implements COS
      */
     public COSName getStreamFilterName() 
     {
-        COSName stmF = (COSName) dictionary.getDictionaryObject( COSName.STM_F 
);
+        COSName stmF = dictionary.getCOSName(COSName.STM_F );
         if (stmF == null)
         {
             stmF = COSName.IDENTITY;
@@ -603,7 +603,7 @@ public class PDEncryption implements COS
      */
     public COSName getStringFilterName() 
     {
-        COSName strF = (COSName) dictionary.getDictionaryObject( COSName.STR_F 
);
+        COSName strF = dictionary.getCOSName(COSName.STR_F);
         if (strF == null)
         {
             strF = COSName.IDENTITY;

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java
      Wed Sep  3 18:44:49 2025        (r1928216)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFont.java
      Wed Sep  3 18:49:56 2025        (r1928217)
@@ -220,7 +220,7 @@ public abstract class PDCIDFont implemen
     {
         if (fontDescriptor == null)
         {
-            COSDictionary fd = (COSDictionary) 
dict.getDictionaryObject(COSName.FONT_DESC);
+            COSDictionary fd = dict.getCOSDictionary(COSName.FONT_DESC);
             if (fd != null)
             {
                 fontDescriptor = new PDFontDescriptor(fd);

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontDescriptor.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontDescriptor.java
       Wed Sep  3 18:44:49 2025        (r1928216)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontDescriptor.java
       Wed Sep  3 18:49:56 2025        (r1928217)
@@ -849,7 +849,7 @@ public final class PDFontDescriptor impl
      */
     public PDPanose getPanose()
     {
-        COSDictionary style = 
(COSDictionary)dic.getDictionaryObject(COSName.STYLE);
+        COSDictionary style = dic.getCOSDictionary(COSName.STYLE);
         if (style != null)
         {
             COSString panose = 
(COSString)style.getDictionaryObject(COSName.PANOSE);

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3CharProc.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3CharProc.java
        Wed Sep  3 18:44:49 2025        (r1928216)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3CharProc.java
        Wed Sep  3 18:49:56 2025        (r1928217)
@@ -26,7 +26,6 @@ import org.apache.commons.logging.LogFac
 import org.apache.pdfbox.contentstream.PDContentStream;
 import org.apache.pdfbox.contentstream.operator.Operator;
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSNumber;
 import org.apache.pdfbox.cos.COSStream;
@@ -85,7 +84,7 @@ public final class PDType3CharProc imple
             // PDFBOX-5294
             LOG.warn("Using resources dictionary found in charproc entry");
             LOG.warn("This should have been in the font or in the page 
dictionary");
-            return new PDResources((COSDictionary) 
charStream.getDictionaryObject(COSName.RESOURCES));
+            return new 
PDResources(charStream.getCOSDictionary(COSName.RESOURCES));
         }
         return font.getResources();
     }

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCIEDictionaryBasedColorSpace.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCIEDictionaryBasedColorSpace.java
       Wed Sep  3 18:44:49 2025        (r1928216)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCIEDictionaryBasedColorSpace.java
       Wed Sep  3 18:49:56 2025        (r1928217)
@@ -102,7 +102,7 @@ public abstract class PDCIEDictionaryBas
      */
     public final PDTristimulus getWhitepoint()
     {
-        COSArray wp = (COSArray) 
dictionary.getDictionaryObject(COSName.WHITE_POINT);
+        COSArray wp = dictionary.getCOSArray(COSName.WHITE_POINT);
         if (wp == null)
         {
             wp = new COSArray();
@@ -122,7 +122,7 @@ public abstract class PDCIEDictionaryBas
      */
     public final PDTristimulus getBlackPoint()
     {
-        COSArray bp = (COSArray) 
dictionary.getDictionaryObject(COSName.BLACK_POINT);
+        COSArray bp = dictionary.getCOSArray(COSName.BLACK_POINT);
         if (bp == null)
         {
             bp = new COSArray();

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCalRGB.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCalRGB.java
     Wed Sep  3 18:44:49 2025        (r1928216)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCalRGB.java
     Wed Sep  3 18:49:56 2025        (r1928217)
@@ -120,7 +120,7 @@ public class PDCalRGB extends PDCIEDicti
      */
     public final PDGamma getGamma()
     {
-        COSArray gammaArray = (COSArray) 
dictionary.getDictionaryObject(COSName.GAMMA);
+        COSArray gammaArray = dictionary.getCOSArray(COSName.GAMMA);
         if (gammaArray == null)
         {
             gammaArray = new COSArray();
@@ -139,7 +139,7 @@ public class PDCalRGB extends PDCIEDicti
      */
     public final float[] getMatrix()
     {
-        COSArray matrix = 
(COSArray)dictionary.getDictionaryObject(COSName.MATRIX);
+        COSArray matrix = dictionary.getCOSArray(COSName.MATRIX);
         if (matrix == null)
         {
             return new float[] {  1, 0, 0, 0, 1, 0, 0, 0, 1 };

Reply via email to