1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-20 15:18:08 +02:00
pdf.js/test
Jonas Jenwald d6d0f778aa Don't read past the EOI marker for JPEG images with non-default restart interval (issue 7828)
*After browsing through (a version of) the JPEG specification, see https://www.w3.org/Graphics/JPEG/itu-t81.pdf, I hope that this patch makes sense.*

Note that while issue 7828 became a problem after PR 7661, it isn't really a regression from than PR. The explanation is rather that we're now relying on `core/jpg.js` instead of the Native Image decoder in more situations than before, which thus exposed an *existing* issue in our JPEG decoder.
Another factor also seems to be that in many JPEG images, the DRI (Define Restart Interval) marker isn't present, in which case this bug won't manifest either.

According to https://www.w3.org/Graphics/JPEG/itu-t81.pdf#page=89 (at the bottom of the page):
"NOTE – The final restart interval may be smaller than the size specified by the DRI marker segment, as it includes only the number of MCUs remaining in the scan."
Furthermore, according to https://www.w3.org/Graphics/JPEG/itu-t81.pdf#page=39 (in the middle of the page):
"[...] If restart is enabled and the restart interval is defined to be Ri, each entropy-coded segment except the last one shall contain Ri MCUs. The last one shall contain whatever number of MCUs completes the scan."

Based on the above, it thus seem to me that we should simply ensure that we're not attempting to continue to parse Scan data once we've found all MCUs (Minimum Coded Unit) of the image.

Fixes 7828.
2017-03-20 17:16:33 +01:00
..
chromium Adjust the brace-style ESLint rule to disallow single lines (and also enable no-iterator) 2017-02-04 15:53:08 +01:00
features Remove usage of mozFillRule 2017-01-29 23:24:44 +01:00
font Replaces RequireJS to SystemJS. 2017-02-27 08:32:39 -06:00
pdfs Don't read past the EOI marker for JPEG images with non-default restart interval (issue 7828) 2017-03-20 17:16:33 +01:00
resources Remove 'use strict'; causing failure and unused prefs. 2016-01-14 13:23:48 -08:00
stats Adjust the brace-style ESLint rule to disallow single lines (and also enable no-iterator) 2017-02-04 15:53:08 +01:00
ttx Update fonttools location and version (issue 6223) 2015-07-17 12:51:09 +02:00
unit Merge pull request #8144 from timvandermeij/issue-8143 2017-03-10 00:40:13 +01:00
.eslintrc Switch to using ESLint, instead of JSHint, for linting 2016-12-16 21:06:36 +01:00
.gitignore Ignore test snapshots directory. 2013-03-15 11:24:08 -07:00
annotation_layer_test.css Button widget annotations: improve unit tests, simplify code and remove labels 2016-12-17 20:38:48 +01:00
downloadutils.js Switch to using ESLint, instead of JSHint, for linting 2016-12-16 21:06:36 +01:00
driver.js Prevent browser console errors during testing 2017-02-05 13:23:42 +01:00
test.js Switch to using ESLint, instead of JSHint, for linting 2016-12-16 21:06:36 +01:00
test_manifest.json Don't read past the EOI marker for JPEG images with non-default restart interval (issue 7828) 2017-03-20 17:16:33 +01:00
test_slave.html Replaces RequireJS to SystemJS. 2017-02-27 08:32:39 -06:00
testutils.js Switch to using ESLint, instead of JSHint, for linting 2016-12-16 21:06:36 +01:00
text_layer_test.css Better "text" testing. 2015-11-19 11:03:52 -06:00
webbrowser.js Switch to using ESLint, instead of JSHint, for linting 2016-12-16 21:06:36 +01:00
webserver.js Switch to using ESLint, instead of JSHint, for linting 2016-12-16 21:06:36 +01:00