Skip to content

Commit 5e69723

Browse files
committed
Fix infinite loop in JBIG2 decoder with >4 referred-to segments and add regression test
1 parent e7288dc commit 5e69723

File tree

4 files changed

+11
-13
lines changed

4 files changed

+11
-13
lines changed

src/core/jbig2.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1165,15 +1165,15 @@ function readSegmentHeader(data, start) {
11651165
let referredToCount = (referredFlags >> 5) & 7;
11661166
const retainBits = [referredFlags & 31];
11671167
let position = start + 6;
1168-
if (referredFlags === 7) {
1168+
if (referredToCount === 7) {
11691169
referredToCount = readUint32(data, position - 1) & 0x1fffffff;
11701170
position += 3;
1171-
let bytes = (referredToCount + 7) >> 3;
1171+
let bytes = (referredToCount + 8) >> 3;
11721172
retainBits[0] = data[position++];
11731173
while (--bytes > 0) {
11741174
retainBits.push(data[position++]);
11751175
}
1176-
} else if (referredFlags === 5 || referredFlags === 6) {
1176+
} else if (referredToCount === 5 || referredToCount === 6) {
11771177
throw new Jbig2Error("invalid referred-to flags");
11781178
}
11791179

test/pdfs/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -749,6 +749,7 @@
749749
!comments.pdf
750750
!issue20319_1.pdf
751751
!issue20319_2.pdf
752+
!issue20439.pdf
752753
!bug1992868.pdf
753754
!bug1937438_af_from_latex.pdf
754755
!bug1937438_from_word.pdf

test/pdfs/issue20439.pdf

1.27 KB
Binary file not shown.

test/test_manifest.json

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1114,16 +1114,6 @@
11141114
"lastPage": 1,
11151115
"type": "eq"
11161116
},
1117-
{
1118-
"id": "hmm-pdf",
1119-
"file": "pdfs/hmm.pdf",
1120-
"md5": "e08467e60101ee5f4a59716e86db6dc9",
1121-
"link": true,
1122-
"rounds": 1,
1123-
"firstPage": 1,
1124-
"lastPage": 2,
1125-
"type": "load"
1126-
},
11271117
{
11281118
"id": "issue7847_radial",
11291119
"file": "pdfs/issue7847_radial.pdf",
@@ -2809,6 +2799,13 @@
28092799
"rounds": 1,
28102800
"type": "eq"
28112801
},
2802+
{
2803+
"id": "issue20439",
2804+
"file": "pdfs/issue20439.pdf",
2805+
"md5": "3c7e888b26ff00943ec1610d93235efc",
2806+
"rounds": 1,
2807+
"type": "eq"
2808+
},
28122809
{
28132810
"id": "issue15942",
28142811
"file": "pdfs/issue15942.pdf",

0 commit comments

Comments
 (0)