diff options
author | Jay Berkenbilt <ejb@ql.org> | 2022-11-19 22:01:54 +0100 |
---|---|---|
committer | Jay Berkenbilt <jberkenbilt@users.noreply.github.com> | 2022-11-19 23:03:17 +0100 |
commit | e9980efec87a7a678a1a00cfaf8fc60263c54d24 (patch) | |
tree | c3b1379065ff9b1af7b9147ea90c516abf8daf62 /qpdf | |
parent | d79a823d66512b5f5db2c0db739d1a867fcd5774 (diff) | |
download | qpdf-e9980efec87a7a678a1a00cfaf8fc60263c54d24.tar.zst |
Correctly handle reuse of xref stream (fixes #809)
Diffstat (limited to 'qpdf')
-rw-r--r-- | qpdf/qpdf.testcov | 1 | ||||
-rw-r--r-- | qpdf/qtest/qpdf/reuse-xref-stream-obj9.out | 1 | ||||
-rw-r--r-- | qpdf/qtest/qpdf/reuse-xref-stream-xref.out | 10 | ||||
-rw-r--r-- | qpdf/qtest/qpdf/reuse-xref-stream.pdf | bin | 0 -> 1447 bytes | |||
-rw-r--r-- | qpdf/qtest/xref-streams.test | 13 |
5 files changed, 24 insertions, 1 deletions
diff --git a/qpdf/qpdf.testcov b/qpdf/qpdf.testcov index e89f63a0..f99d3f74 100644 --- a/qpdf/qpdf.testcov +++ b/qpdf/qpdf.testcov @@ -678,3 +678,4 @@ QPDF_json bad calledgetallpages 0 QPDF_json bad pushedinheritedpageresources 0 QPDFPageObjectHelper copied fallback 0 QPDFPageObjectHelper used fallback without copying 0 +QPDF skipping cache for known unchecked object 0 diff --git a/qpdf/qtest/qpdf/reuse-xref-stream-obj9.out b/qpdf/qtest/qpdf/reuse-xref-stream-obj9.out new file mode 100644 index 00000000..b2a0b987 --- /dev/null +++ b/qpdf/qtest/qpdf/reuse-xref-stream-obj9.out @@ -0,0 +1 @@ +<< /BaseFont /Times-Italics /Encoding /WinAnsiEncoding /Subtype /Type1 /Type /Font >> diff --git a/qpdf/qtest/qpdf/reuse-xref-stream-xref.out b/qpdf/qtest/qpdf/reuse-xref-stream-xref.out new file mode 100644 index 00000000..becc91f3 --- /dev/null +++ b/qpdf/qtest/qpdf/reuse-xref-stream-xref.out @@ -0,0 +1,10 @@ +1/0: uncompressed; offset = 25 +2/0: compressed; stream = 1, index = 0 +3/0: compressed; stream = 1, index = 1 +4/0: compressed; stream = 1, index = 2 +5/0: compressed; stream = 1, index = 3 +6/0: uncompressed; offset = 1054 +7/0: uncompressed; offset = 692 +8/0: uncompressed; offset = 791 +9/0: uncompressed; offset = 1087 +10/0: uncompressed; offset = 1196 diff --git a/qpdf/qtest/qpdf/reuse-xref-stream.pdf b/qpdf/qtest/qpdf/reuse-xref-stream.pdf Binary files differnew file mode 100644 index 00000000..96cb983f --- /dev/null +++ b/qpdf/qtest/qpdf/reuse-xref-stream.pdf diff --git a/qpdf/qtest/xref-streams.test b/qpdf/qtest/xref-streams.test index 10a32763..8d8e8bd9 100644 --- a/qpdf/qtest/xref-streams.test +++ b/qpdf/qtest/xref-streams.test @@ -14,7 +14,7 @@ cleanup(); my $td = new TestDriver('xref-streams'); -my $n_tests = 3; +my $n_tests = 5; # Handle xref stream with more entries than reported (bug 2872265) $td->runtest("xref with short size", @@ -32,6 +32,17 @@ $td->runtest("show new xref stream", {$td->FILE => "xref-with-short-size-new.out", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); +# Handle appended file that reuses the xref stream object number +$td->runtest("override xref stream - xref", + {$td->COMMAND => "qpdf --show-xref reuse-xref-stream.pdf"}, + {$td->FILE => "reuse-xref-stream-xref.out", + $td->EXIT_STATUS => 0}, + $td->NORMALIZE_NEWLINES); +$td->runtest("override xref stream - object", + {$td->COMMAND => "qpdf --show-object=9 reuse-xref-stream.pdf"}, + {$td->FILE => "reuse-xref-stream-obj9.out", + $td->EXIT_STATUS => 0}, + $td->NORMALIZE_NEWLINES); cleanup(); $td->report($n_tests); |