Testing for invalid values of width, height, numcomps (#1254)
authorszukw000 <szukw000@arcor.de>
Wed, 10 Jun 2020 15:40:50 +0000 (17:40 +0200)
committerGitHub <noreply@github.com>
Wed, 10 Jun 2020 15:40:50 +0000 (17:40 +0200)
src/lib/openjp2/jp2.c

index 4809e3488c12a574afea6f25c6f4a8fdec9febe5..7c065ba742be2bbe60eaa958e5583b1f7fead8d6 100644 (file)
@@ -586,6 +586,12 @@ static OPJ_BOOL opj_jp2_read_ihdr(opj_jp2_t *jp2,
     opj_read_bytes(p_image_header_data, &(jp2->numcomps), 2);   /* NC */
     p_image_header_data += 2;
 
+    if (jp2->h < 1 || jp2->w < 1 || jp2->numcomps < 1) {
+        opj_event_msg(p_manager, EVT_ERROR,
+                      "Wrong values for: w(%d) h(%d) numcomps(%d) (ihdr)\n",
+                      jp2->w, jp2->h, jp2->numcomps);
+        return OPJ_FALSE;
+    }
     if ((jp2->numcomps - 1U) >=
             16384U) { /* unsigned underflow is well defined: 1U <= jp2->numcomps <= 16384U */
         opj_event_msg(p_manager, EVT_ERROR, "Invalid number of components (ihdr)\n");