color_apply_icc_profile: add checks on the number of components (#1236)
authorszukw000 <szukw000@arcor.de>
Thu, 16 Apr 2020 22:37:33 +0000 (00:37 +0200)
committerGitHub <noreply@github.com>
Thu, 16 Apr 2020 22:37:33 +0000 (00:37 +0200)
src/bin/common/color.c

index d3a2f38d7ef3c9bdc63d1c3bbd069f4000b10b4c..27f15f137f73ee7aa6c6ae4b531368157a86ba26 100644 (file)
@@ -488,6 +488,10 @@ void color_apply_icc_profile(opj_image_t *image)
     if (out_space == cmsSigRgbData) { /* enumCS 16 */
         unsigned int i, nr_comp = image->numcomps;
 
+        if (nr_comp < 3) { /* GRAY or GRAYA, not RGB or RGBA */
+            cmsCloseProfile(in_prof);
+            return;
+        }
         if (nr_comp > 4) {
             nr_comp = 4;
         }
@@ -529,6 +533,10 @@ void color_apply_icc_profile(opj_image_t *image)
         out_prof = cmsCreate_sRGBProfile();
         new_space = OPJ_CLRSPC_SRGB;
     } else if (out_space == cmsSigYCbCrData) { /* enumCS 18 */
+        if (image->numcomps < 3) {
+            cmsCloseProfile(in_prof);
+            return;
+        }
         in_type = TYPE_YCbCr_16;
         out_type = TYPE_RGB_16;
         out_prof = cmsCreate_sRGBProfile();