Merge pull request #8170 from Snuffleupagus/issue-8169
Try to recover when encountering JPEG markers with too short marker lengths (issue 8169)
This commit is contained in:
commit
cfc45e556c
@ -26,6 +26,7 @@
|
||||
}
|
||||
}(this, function (exports, sharedUtil) {
|
||||
|
||||
var warn = sharedUtil.warn;
|
||||
var error = sharedUtil.error;
|
||||
|
||||
/**
|
||||
@ -604,8 +605,28 @@ var JpegImage = (function JpegImageClosure() {
|
||||
}
|
||||
|
||||
function readDataBlock() {
|
||||
function isValidMarkerAt(pos) {
|
||||
if (pos < data.length - 1) {
|
||||
return (data[pos] === 0xFF &&
|
||||
data[pos + 1] >= 0xC0 && data[pos + 1] <= 0xFE);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
var length = readUint16();
|
||||
var array = data.subarray(offset, offset + length - 2);
|
||||
var endOffset = offset + length - 2;
|
||||
|
||||
if (!isValidMarkerAt(endOffset)) {
|
||||
warn('readDataBlock - incorrect length, next marker is: ' +
|
||||
(data[endOffset] << 8 | data[endOffset + 1]).toString('16'));
|
||||
var pos = offset;
|
||||
while (!isValidMarkerAt(pos)) {
|
||||
pos++;
|
||||
}
|
||||
endOffset = pos;
|
||||
}
|
||||
|
||||
var array = data.subarray(offset, endOffset);
|
||||
offset += array.length;
|
||||
return array;
|
||||
}
|
||||
|
1
test/pdfs/issue8169.pdf.link
Normal file
1
test/pdfs/issue8169.pdf.link
Normal file
@ -0,0 +1 @@
|
||||
http://web.archive.org/save/_embed/http://210.243.166.143/prob1.pdf
|
@ -733,6 +733,13 @@
|
||||
"link": false,
|
||||
"type": "eq"
|
||||
},
|
||||
{ "id": "issue8169",
|
||||
"file": "pdfs/issue8169.pdf",
|
||||
"md5": "62fd6479f9e1c8c5ce8cba6b1781d0a5",
|
||||
"rounds": 1,
|
||||
"link": true,
|
||||
"type": "eq"
|
||||
},
|
||||
{ "id": "txt2pdf",
|
||||
"file": "pdfs/txt2pdf.pdf",
|
||||
"md5": "02cefa0f5e8d96313bb05163b2f88c8c",
|
||||
|
Loading…
Reference in New Issue
Block a user