color_apply_icc_profile: add checks on the number of components (#1236)
This commit is contained in:
parent
040e142288
commit
b6b7e96b0c
|
@ -488,6 +488,10 @@ void color_apply_icc_profile(opj_image_t *image)
|
||||||
if (out_space == cmsSigRgbData) { /* enumCS 16 */
|
if (out_space == cmsSigRgbData) { /* enumCS 16 */
|
||||||
unsigned int i, nr_comp = image->numcomps;
|
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) {
|
if (nr_comp > 4) {
|
||||||
nr_comp = 4;
|
nr_comp = 4;
|
||||||
}
|
}
|
||||||
|
@ -529,6 +533,10 @@ void color_apply_icc_profile(opj_image_t *image)
|
||||||
out_prof = cmsCreate_sRGBProfile();
|
out_prof = cmsCreate_sRGBProfile();
|
||||||
new_space = OPJ_CLRSPC_SRGB;
|
new_space = OPJ_CLRSPC_SRGB;
|
||||||
} else if (out_space == cmsSigYCbCrData) { /* enumCS 18 */
|
} else if (out_space == cmsSigYCbCrData) { /* enumCS 18 */
|
||||||
|
if (image->numcomps < 3) {
|
||||||
|
cmsCloseProfile(in_prof);
|
||||||
|
return;
|
||||||
|
}
|
||||||
in_type = TYPE_YCbCr_16;
|
in_type = TYPE_YCbCr_16;
|
||||||
out_type = TYPE_RGB_16;
|
out_type = TYPE_RGB_16;
|
||||||
out_prof = cmsCreate_sRGBProfile();
|
out_prof = cmsCreate_sRGBProfile();
|
||||||
|
|
Loading…
Reference in New Issue