Timeout in pdf_codec_tiff_fuzzer |
|||||||
Issue descriptionDetailed report: https://clusterfuzz.com/testcase?key=6418919350075392 Fuzzer: libFuzzer_pdf_codec_tiff_fuzzer Job Type: libfuzzer_chrome_asan Platform Id: linux Crash Type: Timeout (exceeds 25 secs) Crash Address: Crash State: pdf_codec_tiff_fuzzer Sanitizer: address (ASAN) Reproducer Testcase: https://clusterfuzz.com/download?testcase_id=6418919350075392 Issue filed automatically. See https://chromium.googlesource.com/chromium/src/+/master/testing/libfuzzer/reproducing.md for more information. Note: This crash might not be reproducible with the provided testcase. That said, for the past 14 days we've been seeing this crash frequently. If you are unable to reproduce this, please try a speculative fix based on the crash stacktrace in the report. The fix can be verified by looking at the crash statistics in the report, a day after the fix is deployed. If the fix resolved the issue, please close the bug by marking as Fixed.
,
Sep 5 2017
hnakashima@ can you take a look?
,
Sep 10 2017
,
Sep 15 2017
This is a libtiff bug. The OJpeg (original Jpeg, tag value 0006) decoder has quadratic complexity in the number of tiles of an image. This is relevant for this test case, which has ~3600 tiles, and decoding takes an amount of time in the order of magnitude of an hour. OJpeg is rarely used, deprecated since 1992. This bug only happens with TIFFs with OJpeg compression that are tiled (not striped) and have a large amount of tiles. Due to the rarity of these conditions, I don't think it's worth pursuing a fix.
,
Sep 18 2017
From the header of tif_ojpeg.c:
"A disadvantage is the lack of random access to the individual striles. This is the
reason for much of the complicated restart-and-position stuff inside OJPEGPreDecode.
Applications would do well accessing all striles in order, as this will result in
a single sequential scan of the input stream, and no restarting of LibJpeg decoding
session."
When gtTileSeparate in tif_getimage.c loops through the tiles in order, it does not follow this, but rather:
for each tile:
for each color channel:
TIFFReadTile()
This causes each call to TIFFReadTile to have linear complexity in the number of tiles until that one, so the total complexity is quadratic in the number of tiles.
,
Oct 1 2017
Automatically applying components based on information from OWNERS files. If this seems incorrect, please apply the Test-Predator-Wrong-Components label.
,
Oct 24 2017
For more information, please see https://chromium.googlesource.com/chromium/src/+/master/testing/libfuzzer/reference.md. The link referenced in the description is no longer valid.
,
Nov 7 2017
,
Apr 17 2018
We are closing all ooms and timeouts that are unreproducible. We won't be filing such bugs in future. |
|||||||
►
Sign in to add a comment |
|||||||
Comment 1 by msrchandra@chromium.org
, Sep 5 2017Components: Internals>Plugins>PDF
Labels: Test-Predator-Correct-CLs
Owner: npm@chromium.org
Status: Assigned (was: Untriaged)