diff --git a/src/lib/openjp2/j2k.c b/src/lib/openjp2/j2k.c index 8790fc33..4434bf11 100644 --- a/src/lib/openjp2/j2k.c +++ b/src/lib/openjp2/j2k.c @@ -3163,6 +3163,11 @@ static OPJ_BOOL opj_j2k_read_poc ( opj_j2k_t *p_j2k, l_old_poc_nb = l_tcp->POC ? l_tcp->numpocs + 1 : 0; l_current_poc_nb += l_old_poc_nb; + if(l_current_poc_nb >= 32) + { + opj_event_msg(p_manager, EVT_ERROR, "Too many POCs %d\n", l_current_poc_nb); + return OPJ_FALSE; + } assert(l_current_poc_nb < 32); /* now poc is in use.*/ diff --git a/tests/nonregression/CMakeLists.txt b/tests/nonregression/CMakeLists.txt index 51664256..04151aa4 100644 --- a/tests/nonregression/CMakeLists.txt +++ b/tests/nonregression/CMakeLists.txt @@ -25,6 +25,7 @@ set(BLACKLIST_JPEG2000_TMP 26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2 4035.pdf.SIGSEGV.d8b.3375.jp2 3635.pdf.asan.77.2930.jp2 + issue165.jp2 ) # Define a list of file which should be gracefully rejected: diff --git a/tests/nonregression/test_suite.ctest.in b/tests/nonregression/test_suite.ctest.in index a0c89eda..47d26a93 100644 --- a/tests/nonregression/test_suite.ctest.in +++ b/tests/nonregression/test_suite.ctest.in @@ -142,6 +142,8 @@ opj_decompress -i @INPUT_NR_PATH@/issue208.jp2 -o @TEMP_PATH@/i opj_decompress -i @INPUT_NR_PATH@/issue211.jp2 -o @TEMP_PATH@/issue211.jp2.pgx # issue 171 opj_decompress -i @INPUT_NR_PATH@/issue171.jp2 -o @TEMP_PATH@/issue171.jp2.pgx +# issue 171 +!opj_decompress -i @INPUT_NR_PATH@/issue165.jp2 -o @TEMP_PATH@/issue165.jp2.pgx # decode with specific area # prec=12; nb_c=1