summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormayeut <mayeut@users.noreply.github.com>2016-05-08 19:18:05 +0200
committermayeut <mayeut@users.noreply.github.com>2016-05-08 19:18:05 +0200
commit162f6199c0cd3ec1c6c6dc65e41b2faab92b2d91 (patch)
treef0305a60841868149e46aef917b86b8d17d9c9b9
parent8f9cc62b3f9a1da9712329ddcedb9750d585505c (diff)
Fix Heap Buffer Overflow in function color_cmyk_to_rgb
Fix uclouvain/openjpeg#774
-rw-r--r--src/bin/common/color.c9
-rw-r--r--tests/nonregression/test_suite.ctest.in2
2 files changed, 10 insertions, 1 deletions
diff --git a/src/bin/common/color.c b/src/bin/common/color.c
index 944df73b..234c7bdf 100644
--- a/src/bin/common/color.c
+++ b/src/bin/common/color.c
@@ -855,7 +855,14 @@ void color_cmyk_to_rgb(opj_image_t *image)
w = image->comps[0].w;
h = image->comps[0].h;
- if(image->numcomps < 4) return;
+ if (
+ (image->numcomps < 4)
+ || (image->comps[0].dx != image->comps[1].dx) || (image->comps[0].dx != image->comps[2].dx) || (image->comps[0].dx != image->comps[3].dx)
+ || (image->comps[0].dy != image->comps[1].dy) || (image->comps[0].dy != image->comps[2].dy) || (image->comps[0].dy != image->comps[3].dy)
+ ) {
+ fprintf(stderr,"%s:%d:color_cmyk_to_rgb\n\tCAN NOT CONVERT\n", __FILE__,__LINE__);
+ return;
+ }
max = w * h;
diff --git a/tests/nonregression/test_suite.ctest.in b/tests/nonregression/test_suite.ctest.in
index c48f66b2..13112216 100644
--- a/tests/nonregression/test_suite.ctest.in
+++ b/tests/nonregression/test_suite.ctest.in
@@ -559,3 +559,5 @@ opj_decompress -i @INPUT_NR_PATH@/basn6a08.jp2 -o @TEMP_PATH@/basn6a08_tif-15.ti
opj_decompress -i @INPUT_NR_PATH@/issue726.j2k -o @TEMP_PATH@/issue726.png
# issue 733
!opj_decompress -i @INPUT_NR_PATH@/issue733.jp2 -o @TEMP_PATH@/issue733.png
+# issue 774
+!opj_decompress -i @INPUT_NR_PATH@/issue774.jp2 -o @TEMP_PATH@/issue774.png