summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorAntonin Descampe <antonin@gmail.com>2014-10-30 18:00:45 +0000
committerAntonin Descampe <antonin@gmail.com>2014-10-30 18:00:45 +0000
commit0a6eaaa60503b38bf389ac6b9c0f6ab4d8bdd497 (patch)
tree2eaec37981fedf5dcadf876a59e0ad11d648544c /src/lib
parent7f8f284ee5ee05200f62266dfff0284551407a83 (diff)
[trunk] add a check on precinct size (fixes issue 420)
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/openjp2/j2k.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/lib/openjp2/j2k.c b/src/lib/openjp2/j2k.c
index f30b3a36..46f50eeb 100644
--- a/src/lib/openjp2/j2k.c
+++ b/src/lib/openjp2/j2k.c
@@ -8617,6 +8617,11 @@ OPJ_BOOL opj_j2k_read_SPCod_SPCoc( opj_j2k_t *p_j2k,
for (i = 0; i < l_tccp->numresolutions; ++i) {
opj_read_bytes(l_current_ptr,&l_tmp ,1); /* SPcoc (I_i) */
++l_current_ptr;
+ /* Precinct exponent 0 is only allowed for lowest resolution level (Table A.21) */
+ if ((i != 0) && (((l_tmp & 0xf) == 0) || ((l_tmp >> 4) == 0))) {
+ opj_event_msg(p_manager, EVT_ERROR, "Invalid precinct size\n");
+ return OPJ_FALSE;
+ }
l_tccp->prcw[i] = l_tmp & 0xf;
l_tccp->prch[i] = l_tmp >> 4;
}