Commit ac2b3b96e163c6ef98b708c6392a7e51538dd1cf
1 parent
af557db4
Make wrong object stream type a warning
Showing
5 changed files
with
29 additions
and
10 deletions
libqpdf/QPDF.cc
| @@ -2187,12 +2187,12 @@ QPDF::resolveObjectsInStream(int obj_stream_number) | @@ -2187,12 +2187,12 @@ QPDF::resolveObjectsInStream(int obj_stream_number) | ||
| 2187 | dict.getKey("/Type").getName() == "/ObjStm")) | 2187 | dict.getKey("/Type").getName() == "/ObjStm")) |
| 2188 | { | 2188 | { |
| 2189 | QTC::TC("qpdf", "QPDF ERR object stream with wrong type"); | 2189 | QTC::TC("qpdf", "QPDF ERR object stream with wrong type"); |
| 2190 | - throw QPDFExc(qpdf_e_damaged_pdf, this->m->file->getName(), | ||
| 2191 | - this->m->last_object_description, | ||
| 2192 | - this->m->file->getLastOffset(), | ||
| 2193 | - "supposed object stream " + | ||
| 2194 | - QUtil::int_to_string(obj_stream_number) + | ||
| 2195 | - " has wrong type"); | 2190 | + warn(QPDFExc(qpdf_e_damaged_pdf, this->m->file->getName(), |
| 2191 | + this->m->last_object_description, | ||
| 2192 | + this->m->file->getLastOffset(), | ||
| 2193 | + "supposed object stream " + | ||
| 2194 | + QUtil::int_to_string(obj_stream_number) + | ||
| 2195 | + " has wrong type")); | ||
| 2196 | } | 2196 | } |
| 2197 | 2197 | ||
| 2198 | if (! (dict.getKey("/N").isInteger() && | 2198 | if (! (dict.getKey("/N").isInteger() && |
qpdf/qtest/qpdf.test
| @@ -2655,7 +2655,7 @@ $n_tests += @badfiles + 7; | @@ -2655,7 +2655,7 @@ $n_tests += @badfiles + 7; | ||
| 2655 | # have error conditions that used to be fatal but are now considered | 2655 | # have error conditions that used to be fatal but are now considered |
| 2656 | # non-fatal. | 2656 | # non-fatal. |
| 2657 | my %badtest_overrides = (); | 2657 | my %badtest_overrides = (); |
| 2658 | -for(6, 12..15, 17, 18..32, 34, 36..37) | 2658 | +for(6, 12..15, 17, 18..32, 34..37) |
| 2659 | { | 2659 | { |
| 2660 | $badtest_overrides{$_} = 0; | 2660 | $badtest_overrides{$_} = 0; |
| 2661 | } | 2661 | } |
| @@ -2715,7 +2715,7 @@ $n_tests += @badfiles + 9; | @@ -2715,7 +2715,7 @@ $n_tests += @badfiles + 9; | ||
| 2715 | # though in some cases it may. Acrobat Reader would not be able to | 2715 | # though in some cases it may. Acrobat Reader would not be able to |
| 2716 | # recover any of these files any better. | 2716 | # recover any of these files any better. |
| 2717 | my %recover_failures = (); | 2717 | my %recover_failures = (); |
| 2718 | -for (1, 7, 16, 35) | 2718 | +for (1, 7, 16) |
| 2719 | { | 2719 | { |
| 2720 | $recover_failures{$_} = 1; | 2720 | $recover_failures{$_} = 1; |
| 2721 | } | 2721 | } |
qpdf/qtest/qpdf/bad35-recover.out
| 1 | WARNING: bad35.pdf (object 1 0, offset 521): supposed object stream 1 has wrong type | 1 | WARNING: bad35.pdf (object 1 0, offset 521): supposed object stream 1 has wrong type |
| 2 | -bad35.pdf (offset 521): unable to find /Root dictionary | 2 | +/QTest is indirect and has type dictionary (9) |
| 3 | +/QTest is a dictionary | ||
| 4 | + /Contents is indirect | ||
| 5 | + /MediaBox is direct | ||
| 6 | + /Parent is indirect | ||
| 7 | + /Resources is direct | ||
| 8 | + /Type is direct | ||
| 9 | +unparse: 4 0 R | ||
| 10 | +unparseResolved: << /Contents 7 0 R /MediaBox [ 0 0 612 792 ] /Parent 3 0 R /Resources << /Font << /F1 6 0 R >> /ProcSet 5 0 R >> /Type /Page >> | ||
| 11 | +test 1 done |
qpdf/qtest/qpdf/bad35.out
| 1 | WARNING: bad35.pdf (object 1 0, offset 521): supposed object stream 1 has wrong type | 1 | WARNING: bad35.pdf (object 1 0, offset 521): supposed object stream 1 has wrong type |
| 2 | -bad35.pdf (offset 521): unable to find /Root dictionary | 2 | +/QTest is indirect and has type dictionary (9) |
| 3 | +/QTest is a dictionary | ||
| 4 | + /Contents is indirect | ||
| 5 | + /MediaBox is direct | ||
| 6 | + /Parent is indirect | ||
| 7 | + /Resources is direct | ||
| 8 | + /Type is direct | ||
| 9 | +unparse: 4 0 R | ||
| 10 | +unparseResolved: << /Contents 7 0 R /MediaBox [ 0 0 612 792 ] /Parent 3 0 R /Resources << /Font << /F1 6 0 R >> /ProcSet 5 0 R >> /Type /Page >> | ||
| 11 | +test 0 done |
qpdf/qtest/qpdf/fuzz-16214.out
| @@ -12,6 +12,7 @@ WARNING: fuzz-16214.pdf: Attempting to reconstruct cross-reference table | @@ -12,6 +12,7 @@ WARNING: fuzz-16214.pdf: Attempting to reconstruct cross-reference table | ||
| 12 | WARNING: fuzz-16214.pdf (offset 7207): error decoding stream data for object 2 0: stream inflate: inflate: data: invalid code lengths set | 12 | WARNING: fuzz-16214.pdf (offset 7207): error decoding stream data for object 2 0: stream inflate: inflate: data: invalid code lengths set |
| 13 | WARNING: fuzz-16214.pdf (offset 7207): getStreamData called on unfilterable stream | 13 | WARNING: fuzz-16214.pdf (offset 7207): getStreamData called on unfilterable stream |
| 14 | WARNING: fuzz-16214.pdf (object 11 0, offset 11551): supposed object stream 5 has wrong type | 14 | WARNING: fuzz-16214.pdf (object 11 0, offset 11551): supposed object stream 5 has wrong type |
| 15 | +WARNING: fuzz-16214.pdf (object 11 0, offset 11551): object stream 5 has incorrect keys | ||
| 15 | WARNING: fuzz-16214.pdf (object 21 0, offset 3639): expected endstream | 16 | WARNING: fuzz-16214.pdf (object 21 0, offset 3639): expected endstream |
| 16 | WARNING: fuzz-16214.pdf (object 21 0, offset 3112): attempting to recover stream length | 17 | WARNING: fuzz-16214.pdf (object 21 0, offset 3112): attempting to recover stream length |
| 17 | WARNING: fuzz-16214.pdf (object 21 0, offset 3112): recovered stream length: 340 | 18 | WARNING: fuzz-16214.pdf (object 21 0, offset 3112): recovered stream length: 340 |