Author: tilman
Date: Fri Sep  4 10:29:23 2026
New Revision: 1937854

Log:
PDFBOX-5660: avoid ArrayIndexOutOfBoundsException, improve logging

Modified:
   
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateEmbeddedTimeStamp.java

Modified: 
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateEmbeddedTimeStamp.java
==============================================================================
--- 
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateEmbeddedTimeStamp.java
        Fri Sep  4 10:28:38 2026        (r1937853)
+++ 
pdfbox/branches/3.0/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateEmbeddedTimeStamp.java
        Fri Sep  4 10:29:23 2026        (r1937854)
@@ -31,6 +31,8 @@ import java.nio.file.Files;
 import java.security.NoSuchAlgorithmException;
 
 import java.util.Arrays;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import org.apache.pdfbox.Loader;
 import org.apache.pdfbox.pdmodel.PDDocument;
@@ -55,6 +57,8 @@ import org.bouncycastle.cms.CMSSignedDat
  */
 public class CreateEmbeddedTimeStamp
 {
+    private static final Log LOG = 
LogFactory.getLog(CreateEmbeddedTimeStamp.class);
+
     private final String tsaUrl;
     private PDDocument document;
     private PDSignature signature;
@@ -151,7 +155,12 @@ public class CreateEmbeddedTimeStamp
         byte[] contents = signature.getContents(documentBytes);
         CMSSignedData signedData = new CMSSignedData(new 
ByteArrayInputStream(contents));
 
-        System.out.println("INFO: Byte Range: " + 
Arrays.toString(signature.getByteRange()));
+        int[] byteRange = signature.getByteRange();
+        LOG.info("/ByteRange: " + Arrays.toString(byteRange));
+        if (byteRange.length != 4)
+        {
+            throw new IOException("/ByteRange should have length 4, but is " + 
Arrays.toString(byteRange));
+        }
 
         if (tsaUrl != null && tsaUrl.length() > 0)
         {
@@ -160,9 +169,8 @@ public class CreateEmbeddedTimeStamp
         }
 
         byte[] newEncoded = Hex.getBytes(signedData.getEncoded());
-        int maxSize = signature.getByteRange()[2] - 
signature.getByteRange()[1];
-        System.out.println(
-                "INFO: New Signature has Size: " + newEncoded.length + " 
maxSize: " + maxSize);
+        int maxSize = byteRange[2] - byteRange[1];
+        LOG.info("New Signature has Size: " + newEncoded.length + " maxSize: " 
+ maxSize);
 
         if (newEncoded.length > maxSize - 2)
         {
@@ -219,12 +227,12 @@ public class CreateEmbeddedTimeStamp
         }
 
         File inFile = new File(args[0]);
-        System.out.println("Input File: " + args[0]);
+        LOG.info("Input File: " + args[0]);
         String name = inFile.getName();
         String substring = name.substring(0, name.lastIndexOf('.'));
 
         File outFile = new File(inFile.getParent(), substring + "_eTs.pdf");
-        System.out.println("Output File: " + outFile.getAbsolutePath());
+        LOG.info("Output File: " + outFile.getAbsolutePath());
 
         // Embed TimeStamp
         CreateEmbeddedTimeStamp signing = new CreateEmbeddedTimeStamp(tsaUrl);

Reply via email to