From 25552ac45bdbc785a5a9fa92c9bb9533f7fca930 Mon Sep 17 00:00:00 2001 From: Jarrel Seah Date: Mon, 18 Nov 2019 00:15:37 +1100 Subject: [PATCH 01/16] Update j2k.c --- src/lib/openjp2/j2k.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/lib/openjp2/j2k.c b/src/lib/openjp2/j2k.c index 14f6ff41a..1a3ced993 100644 --- a/src/lib/openjp2/j2k.c +++ b/src/lib/openjp2/j2k.c @@ -4695,7 +4695,7 @@ static OPJ_BOOL opj_j2k_read_sod(opj_j2k_t *p_j2k, opj_tcp_t * l_tcp = 00; OPJ_UINT32 * l_tile_len = 00; OPJ_BOOL l_sot_length_pb_detected = OPJ_FALSE; - + int truncate = 0; /* preconditions */ assert(p_j2k != 00); assert(p_manager != 00); @@ -4728,9 +4728,10 @@ static OPJ_BOOL opj_j2k_read_sod(opj_j2k_t *p_j2k, /* Check enough bytes left in stream before allocation */ if ((OPJ_OFF_T)p_j2k->m_specific_param.m_decoder.m_sot_length > opj_stream_get_number_byte_left(p_stream)) { - opj_event_msg(p_manager, EVT_ERROR, - "Tile part length size inconsistent with stream length\n"); - return OPJ_FALSE; + truncate = 1 + // opj_event_msg(p_manager, EVT_ERROR, + // "Tile part length size inconsistent with stream length\n"); + // return OPJ_FALSE; } if (p_j2k->m_specific_param.m_decoder.m_sot_length > UINT_MAX - OPJ_COMMON_CBLK_DATA_EXTRA) { @@ -4804,7 +4805,7 @@ static OPJ_BOOL opj_j2k_read_sod(opj_j2k_t *p_j2k, /*l_cstr_index->packno = 0;*/ } - + /* Patch to support new PHR data */ if (!l_sot_length_pb_detected) { l_current_read_size = opj_stream_read_data( @@ -4816,7 +4817,7 @@ static OPJ_BOOL opj_j2k_read_sod(opj_j2k_t *p_j2k, l_current_read_size = 0; } - if (l_current_read_size != p_j2k->m_specific_param.m_decoder.m_sot_length) { + if ((l_current_read_size != p_j2k->m_specific_param.m_decoder.m_sot_length) || (truncate > 0) ) { p_j2k->m_specific_param.m_decoder.m_state = J2K_STATE_NEOC; } else { p_j2k->m_specific_param.m_decoder.m_state = J2K_STATE_TPHSOT; From 4f36758ba63d7a60139d5806002edd78ae92b7df Mon Sep 17 00:00:00 2001 From: Jarrel Seah Date: Mon, 18 Nov 2019 00:17:26 +1100 Subject: [PATCH 02/16] Update j2k.c --- src/lib/openjp2/j2k.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/openjp2/j2k.c b/src/lib/openjp2/j2k.c index 1a3ced993..b6c35304d 100644 --- a/src/lib/openjp2/j2k.c +++ b/src/lib/openjp2/j2k.c @@ -4728,7 +4728,7 @@ static OPJ_BOOL opj_j2k_read_sod(opj_j2k_t *p_j2k, /* Check enough bytes left in stream before allocation */ if ((OPJ_OFF_T)p_j2k->m_specific_param.m_decoder.m_sot_length > opj_stream_get_number_byte_left(p_stream)) { - truncate = 1 + truncate = 1; // opj_event_msg(p_manager, EVT_ERROR, // "Tile part length size inconsistent with stream length\n"); // return OPJ_FALSE; From 64fa86061cf458414fe544d01c12cc9fb7206743 Mon Sep 17 00:00:00 2001 From: Jarrel Seah Date: Mon, 18 Nov 2019 00:27:29 +1100 Subject: [PATCH 03/16] Update t2.c --- src/lib/openjp2/t2.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/lib/openjp2/t2.c b/src/lib/openjp2/t2.c index 0887b9f5f..8680bf33e 100644 --- a/src/lib/openjp2/t2.c +++ b/src/lib/openjp2/t2.c @@ -1349,15 +1349,15 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, do { /* Check possible overflow (on l_current_data only, assumes input args already checked) then size */ - if ((((OPJ_SIZE_T)l_current_data + (OPJ_SIZE_T)l_seg->newlen) < - (OPJ_SIZE_T)l_current_data) || - (l_current_data + l_seg->newlen > p_src_data + p_max_length)) { - opj_event_msg(p_manager, EVT_ERROR, - "read: segment too long (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", - l_seg->newlen, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, - p_pi->compno); - return OPJ_FALSE; - } + //if ((((OPJ_SIZE_T)l_current_data + (OPJ_SIZE_T)l_seg->newlen) < + // (OPJ_SIZE_T)l_current_data) || + // (l_current_data + l_seg->newlen > p_src_data + p_max_length)) { + // opj_event_msg(p_manager, EVT_ERROR, + // "read: segment too long (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", + // l_seg->newlen, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, + // p_pi->compno); + // return OPJ_FALSE; + //} #ifdef USE_JPWL /* we need here a j2k handle to verify if making a check to From 6c1225989a91a81f77a3be1c48a229a2694256fc Mon Sep 17 00:00:00 2001 From: Jarrel Seah Date: Mon, 18 Nov 2019 07:16:29 +1100 Subject: [PATCH 04/16] Update j2k.c --- src/lib/openjp2/j2k.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/lib/openjp2/j2k.c b/src/lib/openjp2/j2k.c index b6c35304d..d14e7013d 100644 --- a/src/lib/openjp2/j2k.c +++ b/src/lib/openjp2/j2k.c @@ -4747,8 +4747,15 @@ static OPJ_BOOL opj_j2k_read_sod(opj_j2k_t *p_j2k, /* LH: oddly enough, in this path, l_tile_len!=0. * TODO: If this was consistent, we could simplify the code to only use realloc(), as realloc(0,...) default to malloc(0,...). */ - *l_current_data = (OPJ_BYTE*) opj_malloc( - p_j2k->m_specific_param.m_decoder.m_sot_length + OPJ_COMMON_CBLK_DATA_EXTRA); + if (!truncate) + { + *l_current_data = (OPJ_BYTE*) opj_malloc( + p_j2k->m_specific_param.m_decoder.m_sot_length + OPJ_COMMON_CBLK_DATA_EXTRA); + } + else + { + *l_current_data = (OPJ_BYTE*) opj_malloc(opj_stream_get_number_byte_left(p_stream) + OPJ_COMMON_CBLK_DATA_EXTRA); + } } else { OPJ_BYTE *l_new_current_data; if (*l_tile_len > UINT_MAX - OPJ_COMMON_CBLK_DATA_EXTRA - @@ -4758,10 +4765,18 @@ static OPJ_BOOL opj_j2k_read_sod(opj_j2k_t *p_j2k, "p_j2k->m_specific_param.m_decoder.m_sot_length"); return OPJ_FALSE; } - + if (!truncate) + { l_new_current_data = (OPJ_BYTE *) opj_realloc(*l_current_data, *l_tile_len + p_j2k->m_specific_param.m_decoder.m_sot_length + OPJ_COMMON_CBLK_DATA_EXTRA); + } + else + { + l_new_current_data = (OPJ_BYTE *) opj_realloc(*l_current_data, + *l_tile_len + opj_stream_get_number_byte_left(p_stream) + + OPJ_COMMON_CBLK_DATA_EXTRA); + } if (! l_new_current_data) { opj_free(*l_current_data); /*nothing more is done as l_current_data will be set to null, and just From 3eb19736a40c86a7dcc5c73f11562c19412b32f8 Mon Sep 17 00:00:00 2001 From: Jarrel Seah Date: Mon, 18 Nov 2019 08:20:43 +1100 Subject: [PATCH 05/16] Update t2.c --- src/lib/openjp2/t2.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/lib/openjp2/t2.c b/src/lib/openjp2/t2.c index 8680bf33e..3bb1cf8b6 100644 --- a/src/lib/openjp2/t2.c +++ b/src/lib/openjp2/t2.c @@ -1349,15 +1349,15 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, do { /* Check possible overflow (on l_current_data only, assumes input args already checked) then size */ - //if ((((OPJ_SIZE_T)l_current_data + (OPJ_SIZE_T)l_seg->newlen) < - // (OPJ_SIZE_T)l_current_data) || - // (l_current_data + l_seg->newlen > p_src_data + p_max_length)) { - // opj_event_msg(p_manager, EVT_ERROR, - // "read: segment too long (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", - // l_seg->newlen, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, - // p_pi->compno); - // return OPJ_FALSE; - //} + if ((((OPJ_SIZE_T)l_current_data + (OPJ_SIZE_T)l_seg->newlen) < + (OPJ_SIZE_T)l_current_data) || + (l_current_data + l_seg->newlen > p_src_data + p_max_length)) { + opj_event_msg(p_manager, EVT_ERROR, + "read: segment too long (%d) current data (%d) p_src_data (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", + l_seg->newlen, l_current_data, p_src_data, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, + p_pi->compno); + return OPJ_FALSE; + } #ifdef USE_JPWL /* we need here a j2k handle to verify if making a check to From 4a7b5aae74cdcc0744c0abc64deada634cf094e3 Mon Sep 17 00:00:00 2001 From: Jarrel Seah Date: Mon, 18 Nov 2019 08:32:50 +1100 Subject: [PATCH 06/16] Update t2.c --- src/lib/openjp2/t2.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/lib/openjp2/t2.c b/src/lib/openjp2/t2.c index 3bb1cf8b6..ffdaba9d2 100644 --- a/src/lib/openjp2/t2.c +++ b/src/lib/openjp2/t2.c @@ -1352,11 +1352,19 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, if ((((OPJ_SIZE_T)l_current_data + (OPJ_SIZE_T)l_seg->newlen) < (OPJ_SIZE_T)l_current_data) || (l_current_data + l_seg->newlen > p_src_data + p_max_length)) { - opj_event_msg(p_manager, EVT_ERROR, + + opj_event_msg(p_manager, EVT_WARNING, "read: segment too long (%d) current data (%d) p_src_data (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", l_seg->newlen, l_current_data, p_src_data, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, p_pi->compno); - return OPJ_FALSE; + break; + + + //opj_event_msg(p_manager, EVT_ERROR, + // "read: segment too long (%d) current data (%d) p_src_data (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", + // l_seg->newlen, l_current_data, p_src_data, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, + // p_pi->compno); + //return OPJ_FALSE; } #ifdef USE_JPWL From d1d979f8a5571b2c14c803b8ddfe77bba6aee5e7 Mon Sep 17 00:00:00 2001 From: Jarrel Seah Date: Mon, 18 Nov 2019 08:47:23 +1100 Subject: [PATCH 07/16] Update t2.c --- src/lib/openjp2/t2.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lib/openjp2/t2.c b/src/lib/openjp2/t2.c index ffdaba9d2..f08f61467 100644 --- a/src/lib/openjp2/t2.c +++ b/src/lib/openjp2/t2.c @@ -1346,7 +1346,7 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, ++l_cblk->numsegs; } } - + int truncate = 0 do { /* Check possible overflow (on l_current_data only, assumes input args already checked) then size */ if ((((OPJ_SIZE_T)l_current_data + (OPJ_SIZE_T)l_seg->newlen) < @@ -1356,9 +1356,9 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, opj_event_msg(p_manager, EVT_WARNING, "read: segment too long (%d) current data (%d) p_src_data (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", l_seg->newlen, l_current_data, p_src_data, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, - p_pi->compno); - break; - + p_pi->compno); + truncate = 1; + l_seg->newlen =p_src_data + p_max_length - l_current_data //opj_event_msg(p_manager, EVT_ERROR, // "read: segment too long (%d) current data (%d) p_src_data (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", @@ -1417,7 +1417,7 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, ++l_seg; ++l_cblk->numsegs; } - } while (l_cblk->numnewpasses > 0); + } while (l_cblk->numnewpasses > 0 && !truncate); l_cblk->real_num_segs = l_cblk->numsegs; ++l_cblk; From 01963dac940b0bcdf8a00daee4d7878ede0c68af Mon Sep 17 00:00:00 2001 From: Jarrel Seah Date: Mon, 18 Nov 2019 08:48:50 +1100 Subject: [PATCH 08/16] Update t2.c --- src/lib/openjp2/t2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/openjp2/t2.c b/src/lib/openjp2/t2.c index f08f61467..3ce2a4ff8 100644 --- a/src/lib/openjp2/t2.c +++ b/src/lib/openjp2/t2.c @@ -1346,7 +1346,7 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, ++l_cblk->numsegs; } } - int truncate = 0 + int truncate = 0; do { /* Check possible overflow (on l_current_data only, assumes input args already checked) then size */ if ((((OPJ_SIZE_T)l_current_data + (OPJ_SIZE_T)l_seg->newlen) < @@ -1358,7 +1358,7 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, l_seg->newlen, l_current_data, p_src_data, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, p_pi->compno); truncate = 1; - l_seg->newlen =p_src_data + p_max_length - l_current_data + l_seg->newlen =p_src_data + p_max_length - l_current_data; //opj_event_msg(p_manager, EVT_ERROR, // "read: segment too long (%d) current data (%d) p_src_data (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", From b2df8a57bbfeecde02d0cfc7bdfb4f1b3493b90b Mon Sep 17 00:00:00 2001 From: Jarrel Seah Date: Mon, 18 Nov 2019 08:57:32 +1100 Subject: [PATCH 09/16] Update t2.c --- src/lib/openjp2/t2.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib/openjp2/t2.c b/src/lib/openjp2/t2.c index 3ce2a4ff8..f4828da79 100644 --- a/src/lib/openjp2/t2.c +++ b/src/lib/openjp2/t2.c @@ -1313,6 +1313,7 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, OPJ_ARG_NOT_USED(p_t2); OPJ_ARG_NOT_USED(pack_info); + int truncate = 0; l_band = l_res->bands; for (bandno = 0; bandno < l_res->numbands; ++bandno) { @@ -1346,7 +1347,7 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, ++l_cblk->numsegs; } } - int truncate = 0; + truncate = 0; do { /* Check possible overflow (on l_current_data only, assumes input args already checked) then size */ if ((((OPJ_SIZE_T)l_current_data + (OPJ_SIZE_T)l_seg->newlen) < @@ -1358,7 +1359,7 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, l_seg->newlen, l_current_data, p_src_data, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, p_pi->compno); truncate = 1; - l_seg->newlen =p_src_data + p_max_length - l_current_data; + l_seg->newlen = p_src_data + p_max_length - l_current_data; //opj_event_msg(p_manager, EVT_ERROR, // "read: segment too long (%d) current data (%d) p_src_data (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", From 2bb128532336952d591d985d1547bc457ede38e3 Mon Sep 17 00:00:00 2001 From: Jarrel Seah Date: Mon, 18 Nov 2019 09:02:15 +1100 Subject: [PATCH 10/16] Update t2.c --- src/lib/openjp2/t2.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib/openjp2/t2.c b/src/lib/openjp2/t2.c index f4828da79..94b077d12 100644 --- a/src/lib/openjp2/t2.c +++ b/src/lib/openjp2/t2.c @@ -1305,6 +1305,7 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, { OPJ_UINT32 bandno, cblkno; OPJ_UINT32 l_nb_code_blocks; + int truncate; OPJ_BYTE *l_current_data = p_src_data; opj_tcd_band_t *l_band = 00; opj_tcd_cblk_dec_t* l_cblk = 00; @@ -1313,7 +1314,7 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, OPJ_ARG_NOT_USED(p_t2); OPJ_ARG_NOT_USED(pack_info); - int truncate = 0; + l_band = l_res->bands; for (bandno = 0; bandno < l_res->numbands; ++bandno) { @@ -1359,7 +1360,7 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, l_seg->newlen, l_current_data, p_src_data, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, p_pi->compno); truncate = 1; - l_seg->newlen = p_src_data + p_max_length - l_current_data; + l_seg->newlen = (OPJ_SIZE_T)(p_src_data + p_max_length - l_current_data); //opj_event_msg(p_manager, EVT_ERROR, // "read: segment too long (%d) current data (%d) p_src_data (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", From 0144c6005d1a6bd0f6e8a9e5d3ab17e37b592dd2 Mon Sep 17 00:00:00 2001 From: Jarrel Seah Date: Mon, 18 Nov 2019 09:05:27 +1100 Subject: [PATCH 11/16] Update t2.c --- src/lib/openjp2/t2.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/openjp2/t2.c b/src/lib/openjp2/t2.c index 94b077d12..49917eb36 100644 --- a/src/lib/openjp2/t2.c +++ b/src/lib/openjp2/t2.c @@ -1355,10 +1355,10 @@ static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t* p_t2, (OPJ_SIZE_T)l_current_data) || (l_current_data + l_seg->newlen > p_src_data + p_max_length)) { - opj_event_msg(p_manager, EVT_WARNING, - "read: segment too long (%d) current data (%d) p_src_data (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", - l_seg->newlen, l_current_data, p_src_data, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, - p_pi->compno); + //opj_event_msg(p_manager, EVT_WARNING, + // "read: segment too long (%d) current data (%d) p_src_data (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", + // l_seg->newlen, l_current_data, p_src_data, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, + // p_pi->compno); truncate = 1; l_seg->newlen = (OPJ_SIZE_T)(p_src_data + p_max_length - l_current_data); From 387cd39844bc83c6d80f42ffe1f74b9d305ec1a1 Mon Sep 17 00:00:00 2001 From: Jarrel Seah Date: Thu, 21 Nov 2019 21:04:07 +1100 Subject: [PATCH 12/16] Update t2.c --- src/lib/openjp2/t2.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/lib/openjp2/t2.c b/src/lib/openjp2/t2.c index 49917eb36..121bd27a8 100644 --- a/src/lib/openjp2/t2.c +++ b/src/lib/openjp2/t2.c @@ -1444,6 +1444,7 @@ static OPJ_BOOL opj_t2_skip_packet_data(opj_t2_t* p_t2, { OPJ_UINT32 bandno, cblkno; OPJ_UINT32 l_nb_code_blocks; + int truncate; opj_tcd_band_t *l_band = 00; opj_tcd_cblk_dec_t* l_cblk = 00; opj_tcd_resolution_t* l_res = @@ -1486,15 +1487,18 @@ static OPJ_BOOL opj_t2_skip_packet_data(opj_t2_t* p_t2, ++l_cblk->numsegs; } } - + truncate = 0; do { /* Check possible overflow then size */ if (((*p_data_read + l_seg->newlen) < (*p_data_read)) || ((*p_data_read + l_seg->newlen) > p_max_length)) { - opj_event_msg(p_manager, EVT_ERROR, - "skip: segment too long (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", - l_seg->newlen, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, - p_pi->compno); + //opj_event_msg(p_manager, EVT_ERROR, + // "skip: segment too long (%d) with max (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n", + // l_seg->newlen, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, + // p_pi->compno); + truncate = 1; + l_seg->newlen = (OPJ_SIZE_T)(p_src_data + p_max_length - l_current_data); + return OPJ_FALSE; } @@ -1528,7 +1532,7 @@ static OPJ_BOOL opj_t2_skip_packet_data(opj_t2_t* p_t2, ++l_seg; ++l_cblk->numsegs; } - } while (l_cblk->numnewpasses > 0); + } while (l_cblk->numnewpasses > 0 && !truncate); ++l_cblk; } From 843f7c8845fcd19f2f2620eb33bc4683c922ac2e Mon Sep 17 00:00:00 2001 From: Jarrel Seah Date: Thu, 21 Nov 2019 21:08:41 +1100 Subject: [PATCH 13/16] Update t2.c --- src/lib/openjp2/t2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/openjp2/t2.c b/src/lib/openjp2/t2.c index 121bd27a8..aeb996124 100644 --- a/src/lib/openjp2/t2.c +++ b/src/lib/openjp2/t2.c @@ -1497,7 +1497,7 @@ static OPJ_BOOL opj_t2_skip_packet_data(opj_t2_t* p_t2, // l_seg->newlen, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, // p_pi->compno); truncate = 1; - l_seg->newlen = (OPJ_SIZE_T)(p_src_data + p_max_length - l_current_data); + l_seg->newlen = (OPJ_SIZE_T)(p_max_length - p_src_data); return OPJ_FALSE; } From c13a6b2d82fe16c812d3326b9c99c4bf0b0d67b0 Mon Sep 17 00:00:00 2001 From: Jarrel Seah Date: Thu, 21 Nov 2019 21:10:07 +1100 Subject: [PATCH 14/16] Update t2.c --- src/lib/openjp2/t2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/openjp2/t2.c b/src/lib/openjp2/t2.c index aeb996124..8c05d8229 100644 --- a/src/lib/openjp2/t2.c +++ b/src/lib/openjp2/t2.c @@ -1497,7 +1497,7 @@ static OPJ_BOOL opj_t2_skip_packet_data(opj_t2_t* p_t2, // l_seg->newlen, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, // p_pi->compno); truncate = 1; - l_seg->newlen = (OPJ_SIZE_T)(p_max_length - p_src_data); + l_seg->newlen = (OPJ_SIZE_T)(p_max_length - p_data_read); return OPJ_FALSE; } From 0d81fe7a75618f1dbe4cb913f75d2a664591b8a0 Mon Sep 17 00:00:00 2001 From: Jarrel Seah Date: Thu, 21 Nov 2019 21:14:35 +1100 Subject: [PATCH 15/16] Update t2.c --- src/lib/openjp2/t2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/openjp2/t2.c b/src/lib/openjp2/t2.c index 8c05d8229..c9c9b77c2 100644 --- a/src/lib/openjp2/t2.c +++ b/src/lib/openjp2/t2.c @@ -1497,7 +1497,7 @@ static OPJ_BOOL opj_t2_skip_packet_data(opj_t2_t* p_t2, // l_seg->newlen, p_max_length, cblkno, p_pi->precno, bandno, p_pi->resno, // p_pi->compno); truncate = 1; - l_seg->newlen = (OPJ_SIZE_T)(p_max_length - p_data_read); + l_seg->newlen = (OPJ_SIZE_T)(p_max_length - *p_data_read); return OPJ_FALSE; } From d07c20de8f4f49bd0b3c6301c283faa97b905eb1 Mon Sep 17 00:00:00 2001 From: Jarrel Seah Date: Thu, 21 Nov 2019 21:24:49 +1100 Subject: [PATCH 16/16] Update t2.c --- src/lib/openjp2/t2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/openjp2/t2.c b/src/lib/openjp2/t2.c index c9c9b77c2..132d843fa 100644 --- a/src/lib/openjp2/t2.c +++ b/src/lib/openjp2/t2.c @@ -1499,7 +1499,7 @@ static OPJ_BOOL opj_t2_skip_packet_data(opj_t2_t* p_t2, truncate = 1; l_seg->newlen = (OPJ_SIZE_T)(p_max_length - *p_data_read); - return OPJ_FALSE; + // return OPJ_FALSE; } #ifdef USE_JPWL