X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fopenjp2%2Ft2.c;fp=src%2Flib%2Fopenjp2%2Ft2.c;h=781a6a59a165a6a0579d4fdba1853ee39ee153a6;hb=017f2becdddbf31cf60dc6d914478b0b2f728cc7;hp=9c212a1ebc56c0fa79747b5be54db654e5f1a94c;hpb=0f3ca8108a1f673001e72ce32eb4912ab2e49e25;p=openjpeg.git diff --git a/src/lib/openjp2/t2.c b/src/lib/openjp2/t2.c index 9c212a1e..781a6a59 100644 --- a/src/lib/openjp2/t2.c +++ b/src/lib/openjp2/t2.c @@ -1229,9 +1229,17 @@ static OPJ_BOOL opj_t2_read_packet_header(opj_t2_t* p_t2, while (!opj_tgt_decode(l_bio, l_prc->imsbtree, cblkno, (OPJ_INT32)i)) { ++i; } - l_cblk->Mb = (OPJ_UINT32)l_band->numbps; - l_cblk->numbps = (OPJ_UINT32)l_band->numbps + 1 - i; + if ((OPJ_UINT32)l_band->numbps + 1 < i) { + /* Not totally sure what we should do in that situation, + * but that avoids the integer overflow of + * https://github.com/uclouvain/openjpeg/pull/1488 + * while keeping the regression test suite happy. + */ + l_cblk->numbps = (OPJ_UINT32)(l_band->numbps + 1 - (int)i); + } else { + l_cblk->numbps = (OPJ_UINT32)l_band->numbps + 1 - i; + } l_cblk->numlenbits = 3; }