[trunk] add a check for illegal SCod value (fixes issue 400)
authorAntonin Descampe <antonin@gmail.com>
Wed, 15 Oct 2014 08:48:19 +0000 (08:48 +0000)
committerAntonin Descampe <antonin@gmail.com>
Wed, 15 Oct 2014 08:48:19 +0000 (08:48 +0000)
src/lib/openjp2/j2k.c

index a0fa82a407276781eea2972297bcb09061d23047..4324c733358316d8628fc38b05c2d6d015ed3026 100644 (file)
@@ -2415,6 +2415,11 @@ static OPJ_BOOL opj_j2k_read_cod (  opj_j2k_t *p_j2k,
 
         opj_read_bytes(p_header_data,&l_tcp->csty,1);           /* Scod */
         ++p_header_data;
+        /* Make sure we know how to decode this */
+        if ((l_tcp->csty & ~(OPJ_UINT32)(J2K_CP_CSTY_PRT | J2K_CP_CSTY_SOP | J2K_CP_CSTY_EPH)) != 0U) {
+                opj_event_msg(p_manager, EVT_ERROR, "Unknown Scod value in COD marker\n");
+                return OPJ_FALSE;
+        }
         opj_read_bytes(p_header_data,&l_tmp,1);                         /* SGcod (A) */
         ++p_header_data;
         l_tcp->prg = (OPJ_PROG_ORDER) l_tmp;