Author: tilman
Date: Thu Sep 18 10:01:03 2025
New Revision: 1928585

Log:
PDFBOX-6071: check only index 2; add test; improve logging

Modified:
   
pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
   pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java

Modified: 
pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
==============================================================================
--- 
pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
     Thu Sep 18 10:00:53 2025        (r1928584)
+++ 
pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdmodel/TestCreateSignature.java
     Thu Sep 18 10:01:03 2025        (r1928585)
@@ -949,6 +949,15 @@ class TestCreateSignature
         final File file = new File("target/pdfs", 
"PDFBOX-5521-santander_freistellungsauftrag.pdf");
         signing.signDetached(file, new File(OUT_DIR + fileNameSigned));
         checkSignature(file, new File(OUT_DIR, fileNameSigned), false);
+
+        // PDFBOX-6071: file that has a /ByteRange longer than the file
+        byte[] ba = Files.readAllBytes(file.toPath());
+        ba[2434] = '9'; // change /ByteRange from [ 0 2490 14292 2385472] to [ 
0 2490 14292 2985472]
+        final File file2 = new File("target/pdfs", 
"PDFBOX-6071-santander_freistellungsauftrag.pdf");
+        Files.write(file2.toPath(), ba);
+        final String fileNameSigned2 = 
getOutputFileName("PDFBOX-6071-santander_freistellungsauftrag.pdf_signed{0}.pdf",
 externallySign);
+        signing.signDetached(file2, new File(OUT_DIR + fileNameSigned2));
+        checkSignature(file2, new File(OUT_DIR, fileNameSigned2), false);
     }
 
     private void checkLTV(File outFile)

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java    
    Thu Sep 18 10:00:53 2025        (r1928584)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java    
    Thu Sep 18 10:01:03 2025        (r1928585)
@@ -1281,15 +1281,14 @@ public class COSWriter implements ICOSVi
                 if (byteRange != null && byteRange.size() == 4)
                 {
                     COSBase base2 = byteRange.get(2);
-                    COSBase base3 = byteRange.get(3);
-                    if (base2 instanceof COSInteger && base3 instanceof 
COSInteger)
+                    if (base2 instanceof COSInteger)
                     {
                         // PDFBOX-5521 avoid hitting "old" signatures
                         long br2 = ((COSInteger) base2).longValue();
-                        long br3 = ((COSInteger) base3).longValue();
-                        if (br2 + br3 > incrementalInput.length())
+                        if (br2 > incrementalInput.length())
                         {
-                            LOG.debug("reachedSignature at offset {}, 
byteRange: {}", getStandardOutput().getPos(), byteRange);
+                            LOG.debug("reachedSignature at offset {}, 
byteRange: {}, input length: {}", 
+                                    getStandardOutput().getPos(), byteRange, 
incrementalInput.length());
                             reachedSignature = true;
                         }
                     }

Reply via email to