Add a pixel test for a fixed JBIG2 bug.

Tests for an integer overflow in CJBig2_SDDProc::DecodeHuffman(), the
symbol dictionary decoding code. The image data is from ClusterFuzz.

Bug: chromium:963885
Change-Id: I277f2bdc8d55ecc049923163ac8b5cb9fb2c64f9
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/60051
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/testing/resources/pixel/bug_963885.in b/testing/resources/pixel/bug_963885.in
new file mode 100644
index 0000000..ed9b674
--- /dev/null
+++ b/testing/resources/pixel/bug_963885.in
@@ -0,0 +1,131 @@
+{{header}}
+{{object 1 0}} <<
+  /Type /Catalog
+  /Pages 2 0 R
+>>
+endobj
+{{object 2 0}} <<
+  /Type /Pages
+  /Count 1
+  /Kids [3 0 R]
+>>
+endobj
+{{object 3 0}} <<
+  /Type /Page
+  /Parent 2 0 R
+  /Contents [4 0 R]
+  /MediaBox [0 0 400 400]
+  /Resources <<
+    /XObject <<
+      /Xop2 5 0 R
+    >>
+  >>
+>>
+endobj
+{{object 4 0}} <<
+  {{streamlen}}
+>>
+stream
+q
+200 0 0 200 0 0 cm
+/Xop2 Do
+Q
+endstream
+endobj
+{{object 5 0}} <<
+  /Type /XObject
+  /Subtype /Image
+  /Width 255
+  /Height 65536
+  /BitsPerComponent 1
+  /Filter [/ASCIIHexDecode /JBIG2Decode]
+  /ColorSpace /DeviceGray
+  {{streamlen}}
+>>
+stream
+eb6e7e48001000e41bf6849395000000000000fb9800c10028000047001f0a0000000000000000
+ffffff00000000000000fb95000000000000fb008888888888888888a7a788888888c100000000
+000000420000000000000000000000000000001f0a0000a7a7ffffff32a7a7a7a7a7a7a7ffffff
+32a7a732a7a7a7a7a7a7a7a7a7a7a7aaa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7010009a7a7a7
+a7a7a7a7a7a7a7a708ce00a7a7a727a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a73ba7a7a7a7
+a7a7a740a7a7a7a6a7a7a7a700007c000000000000ffffbf00007b00000801622100003d000000
+00fb11b3000a50020000150000f001362e7fe2000000000001fe00542000000000000020000001
+8013000000feea00ff4a3b000000000000000000000000000000004e4e0000007f000000000000
+00000000000000004e4e0000007f0034ab6155366f534d00000000000000004e4e0000007f0000
+0000000000000000000000000000004e4e0000007f000000000000000000000000000000000010
+000000007f00000000000000000000000000000000004e4e0000007f0000000000000000000000
+0000000000004f4e0000007f00000000000000000000000000000000004e4e0000007f00000000
+000000000000000000000000004e4e0000007f00000000000000000000000000000000004e4e00
+00007f000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000004e65300002000000
+00004e4e6530000200000000004e4e0000000600000000004e4e6530000200000000004e000000
+4e4e0000007f000000000000ee00000004ffff58164ff6e7e980ddbf004002fa002c000019642f
+ce650000647effe5000000271000808000b3000a50a4a4a40000000000004e4e0000007f000000
+00000000000000000000000000004f4e0000007f00000000000000000000000000000000004e4e
+0000007f00000000000000000052525252525252525252525252eeeeeeeeeeeeeeee525252522b
+2b2b2b2b2b2b2b2b2b2b2b0000020000001b0001fdffffff27675b00001600e883e7001e008015
+007f000130001c000000000000212de7000006ff150000001600000000000000005c0000160000
+0000000000005c000000000000015555555555555555555555550000561e3e9674f05555555555
+5555555555555555555500001b00dd00ff01000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000052525252525252525252525252eeeeeeee
+eeeeeeee525252522b2b2b2b2b2b2b2b2b2b2b2b0000020000001b0001fdffffff275d00000016
+00e883e7001e008015007f000130001c000000000000212de7000006ff15000000160000000000
+0000005c00001600000000000000005c00005c00001600000000000000005c0000000000000000
+00005c00001600000000000000005c000000000000000000000000000000000000005252525252
+5252525252525252eeeeeeeeeeeeeeee525252522b2b2b2b2b2b2b2b2b2b2b2b0000020000001b
+0001fdffffff27675b00001600e883e7001e008015007f000130001c000000000000212de70000
+06ff150000001600000000000000005c00001600000000000000005c0000000000000155555555
+555555555555555555555555555555555555555555555520555555555555405555555555555555
+5555555555555500001b00dd00ff01000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000052525252525252525252525252eeeeeeeeeeeeee
+ee525252522b2b2b2b2b2b2b2b2b2b2b2b0000020000001b0001fdffffff275d0000001600e883
+e7001e008015007f000130001c000000000000212de7000006ff15000000160000000000000000
+5c00001600000000000000005c0000555555555555555555555555555555555555205555555555
+554055555555555555555555555555555500001b00dd00ff010000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000052525252525252525252
+525252eeeeeeeeeeeeeeee525252522b2b2b2b2b2b2b2b2b2b2b2b2b976e3f1e56000001fdffff
+ff275d0000001600e883e7001e008015007f000130001c000000000000212de7000006ff150000
+001600000000000000005c00001600000000000000005c000000000000000000005c0000160000
+0000000000005c0000000000000000000000000000000000000052525252525252525252525252
+eeeeeeeeeeeeeeee525252522b2b2b2b2b2b2b2b2b2b2b2b0000020000001b0001fdffffff2767
+5b00001600e883e7001e008015007f000130001c000000000000212de7000006ff150000001600
+000000000000005c00001600000000000000005c00000000000001555555555555555555555555
+555555555555555555555555555555205555555555554055555555555555555555555555555500
+001b00dd00ff010000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000052525252525252525252525252eeeeeeeeeeeeeeee525252522b2b2b
+2b2b2b2b2b2b2b2b2b0000020000001b0001fdffffff275d0000001600e883e7001e008015007f
+000130001c000000000000212de7000006ff150000001600000000000000005c00001600000000
+000000005c00000000000000000000004e4e0000007f0000000000000000000000000000000000
+4e4e0000007f00000000000000000000000000000000004e4e0000007f000000000000ee000000
+04ffff58164ff6e7e980ddbf004002fa002c000019642fce650000647effe50000002710008080
+00b3000a50a4a4a415c5a4a476000000efff000000000001555555555555555555555555555555
+555555555555555555555555205555555555554055007f000130001c000000000000212de70000
+06ff150000001600000000000000005c00001600000000000000005c0000000000000000000000
+000000000000000052525252525252525252525252eeeeeeeeeeeeeeee525252522b2b2b2b2b2b
+2b2b2b2b2b2b0000020000001b0001fdffffff27675b00001600e883e7001e008015007f000130
+001c000000000000212de7000006ff150000001600000000000000005c00001600000000000000
+005c000000000000015555555555555555555555550000561e3e9674f055555555555555555555
+555555555500001b00dd00ff010000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000052525252525252525252525252eeeeeeeeeeeeeeee52
+5252522b2b2b2b2b2b2b2b2b2b2b2b0000020000001b0001fdffffff275d0000001600e883e700
+1e008015007f000130001c000000000000212de7000006ff150000001600000000000000005c00
+001600000000000000005c00005c00001600000000000000005c000000000000000000005c0000
+1600000000000000005c0000000000000000000000000000000000000052525252525252525252
+525252eeeeeeeeeeeeeeee525252522b2b2b2b2b2b2b2b2b2b2b2b0000020000001b0001fdffff
+ff27675b00001600e883e7001e008015007f000130001c000000000000212de7000006ff150000
+001600000000000000005c00001600000000000000005c00000000000001555555555555555555
+555555555555555555555555555555555555205555555555554055555555555555555555555555
+555500001b00dd00ff010000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000052525252525252525252525252eeeeeeeeeeeeeeee52525252
+2b2b2b2b2b2b2b2b2b2b2b2b0000020000001b0001fdffffff275d0000001600e883e7001e0080
+15007f000130001c000000000000212de7000006ff150000001600000000000000005c00001600
+000000000000005c0000
+endstream
+endobj
+{{xref}}
+{{trailer}}
+{{startxref}}
+%%EOF
diff --git a/testing/resources/pixel/bug_963885_expected.pdf.0.png b/testing/resources/pixel/bug_963885_expected.pdf.0.png
new file mode 100644
index 0000000..1ff3f1f
--- /dev/null
+++ b/testing/resources/pixel/bug_963885_expected.pdf.0.png
Binary files differ