diff --git a/src/core/jbig2.js b/src/core/jbig2.js index df689d963..e31bd1f5e 100644 --- a/src/core/jbig2.js +++ b/src/core/jbig2.js @@ -1165,15 +1165,15 @@ function readSegmentHeader(data, start) { let referredToCount = (referredFlags >> 5) & 7; const retainBits = [referredFlags & 31]; let position = start + 6; - if (referredFlags === 7) { + if (referredToCount === 7) { referredToCount = readUint32(data, position - 1) & 0x1fffffff; position += 3; - let bytes = (referredToCount + 7) >> 3; + let bytes = (referredToCount + 8) >> 3; retainBits[0] = data[position++]; while (--bytes > 0) { retainBits.push(data[position++]); } - } else if (referredFlags === 5 || referredFlags === 6) { + } else if (referredToCount === 5 || referredToCount === 6) { throw new Jbig2Error("invalid referred-to flags"); } diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index e31740c7a..5d2540168 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -750,6 +750,7 @@ !comments.pdf !issue20319_1.pdf !issue20319_2.pdf +!issue20439.pdf !bug1992868.pdf !bug1937438_af_from_latex.pdf !bug1937438_from_word.pdf diff --git a/test/pdfs/issue20439.pdf b/test/pdfs/issue20439.pdf new file mode 100644 index 000000000..5ed98c756 Binary files /dev/null and b/test/pdfs/issue20439.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index a6c05eda6..abba6a6e8 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -2817,6 +2817,13 @@ "rounds": 1, "type": "eq" }, + { + "id": "issue20439", + "file": "pdfs/issue20439.pdf", + "md5": "3c7e888b26ff00943ec1610d93235efc", + "rounds": 1, + "type": "eq" + }, { "id": "issue15942", "file": "pdfs/issue15942.pdf",