diff --git a/src/core/obj.js b/src/core/obj.js index 7e3192987..8c618eb4c 100644 --- a/src/core/obj.js +++ b/src/core/obj.js @@ -1081,7 +1081,7 @@ var XRef = (function XRefClosure() { } else if ((m = /^(\d+)\s+(\d+)\s+obj\b/.exec(token))) { if (typeof this.entries[m[1]] === 'undefined') { this.entries[m[1]] = { - offset: position, + offset: position - stream.start, gen: m[2] | 0, uncompressed: true }; @@ -1094,8 +1094,8 @@ var XRef = (function XRefClosure() { var xrefTagOffset = skipUntil(content, 0, xrefBytes); if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) { - xrefStms.push(position); - this.xrefstms[position] = 1; // don't read it recursively + xrefStms.push(position - stream.start); + this.xrefstms[position - stream.start] = 1; // Avoid recursion } position += contentLength; diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index f500e35cd..d428da4f4 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -145,3 +145,4 @@ !issue6010_2.pdf !issue6068.pdf !issue6081.pdf +!issue6069.pdf diff --git a/test/pdfs/issue6069.pdf b/test/pdfs/issue6069.pdf new file mode 100644 index 000000000..3d148da6f --- /dev/null +++ b/test/pdfs/issue6069.pdf @@ -0,0 +1,28 @@ +Some junk before the header + +%PDF-1.1 +1 0 obj +<> +endobj +2 0 obj +<> +endobj +3 0 obj +<>>>>>/Contents 4 0 R>> +endobj +4 0 obj +<> +stream +BT/F1 14 Tf 20 20 Td(Missing value for startxref and junk before magic header) Tj ET +endstream +endobj +xref +0 5 +0000000000 65535 f +0000000008 00000 n +0000000054 00000 n +0000000128 00000 n +0000000254 00000 n +trailer +<> +startxref diff --git a/test/test_manifest.json b/test/test_manifest.json index 4b38c7532..c303e9f6b 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -2278,5 +2278,11 @@ "md5": "51a724136c0c10008bd061a78ea4b8fc", "rounds": 1, "type": "load" + }, + { "id": "issue6069", + "file": "pdfs/issue6069.pdf", + "md5": "d0ad8871f4116bca8e39513ffa8b7d8e", + "rounds": 1, + "type": "load" } ]