diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2017-06-13 15:21:14 -0400 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-06-13 19:33:05 +0000 |
commit | 957480c17682008ae2a14723868fcdcab89b6577 (patch) | |
tree | cf5f1cb09c4385b7a107d8c8efcc99ea046849f8 /testing/resources | |
parent | 6500c6faf82f636d55c9ca5682711022890bef1d (diff) | |
download | pdfium-957480c17682008ae2a14723868fcdcab89b6577.tar.xz |
Allow zero length streams when parsing.chromium/3130
It's possible to create a stream of length 0 in a PDF document.
Currently the code will early exit and return a nullptr. This causes
issues when you want to print the given PDF as the FPDF_ImportPages code
ends up only generating up to the zero length object.
This CL allows creating streams with length 0 and updates the PDF saving
code to output a blank stream.
Bug: chromium:732380
Change-Id: I44182ba4aaac7c51284b002ba01bbc34b6bcf9e0
Reviewed-on: https://pdfium-review.googlesource.com/6490
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'testing/resources')
-rw-r--r-- | testing/resources/zero_length_stream.in | 63 | ||||
-rw-r--r-- | testing/resources/zero_length_stream.pdf | 74 |
2 files changed, 137 insertions, 0 deletions
diff --git a/testing/resources/zero_length_stream.in b/testing/resources/zero_length_stream.in new file mode 100644 index 0000000000..5b258d4d74 --- /dev/null +++ b/testing/resources/zero_length_stream.in @@ -0,0 +1,63 @@ +{{header}} +{{object 1 0}} << + /Type /Catalog + /Pages 2 0 R +>> +{{object 2 0}} << + /Type /Pages + /MediaBox [ 0 0 200 200 ] + /Count 1 + /Kids [ 3 0 R ] +>> +endobj +{{object 3 0}} << + /Type /Page + /Parent 2 0 R + /Resources << + /Font << + /F1 4 0 R + /F2 5 0 R + >> + >> + /Contents [6 0 R 7 0 R] +>> +endobj +{{object 4 0}} << + /Type /Font + /Subtype /Type1 + /BaseFont /Times-Roman +>> +endobj +{{object 5 0}} << + /Type /Font + /Subtype /Type1 + /BaseFont /Helvetica +>> +endobj +{{object 6 0}} << + /Filter /FlateDecode + /Length 0 +>> +stream +endstream +endobj +{{object 7 0}} << +>> +stream +BT +20 50 Td +/F1 12 Tf +(Hello, world!) Tj +0 50 Td +/F2 16 Tf +(Goodbye, world!) Tj +ET +endstream +endobj +{{xref}} +trailer << + /Size 6 + /Root 1 0 R +>> +{{startxref}} +%%EOF diff --git a/testing/resources/zero_length_stream.pdf b/testing/resources/zero_length_stream.pdf new file mode 100644 index 0000000000..90fae5be7f --- /dev/null +++ b/testing/resources/zero_length_stream.pdf @@ -0,0 +1,74 @@ +%PDF-1.7 +% ò¤ô +1 0 obj << + /Type /Catalog + /Pages 2 0 R +>> +2 0 obj << + /Type /Pages + /MediaBox [ 0 0 200 200 ] + /Count 1 + /Kids [ 3 0 R ] +>> +endobj +3 0 obj << + /Type /Page + /Parent 2 0 R + /Resources << + /Font << + /F1 4 0 R + /F2 5 0 R + >> + >> + /Contents [6 0 R 7 0 R] +>> +endobj +4 0 obj << + /Type /Font + /Subtype /Type1 + /BaseFont /Times-Roman +>> +endobj +5 0 obj << + /Type /Font + /Subtype /Type1 + /BaseFont /Helvetica +>> +endobj +6 0 obj << + /Filter /FlateDecode + /Length 0 +>> +stream +endstream +endobj +7 0 obj << +>> +stream +BT +20 50 Td +/F1 12 Tf +(Hello, world!) Tj +0 50 Td +/F2 16 Tf +(Goodbye, world!) Tj +ET +endstream +endobj +xref +0 8 +0000000000 65535 f +0000000015 00000 n +0000000061 00000 n +0000000154 00000 n +0000000304 00000 n +0000000382 00000 n +0000000458 00000 n +0000000531 00000 n +trailer << + /Size 6 + /Root 1 0 R +>> +startxref +652 +%%EOF |