Fix out-of-bounds read when cropping JPEG2000 images (#1654).
[dcpomatic.git] / test / image_test.cc
index 8a7feb1267fa0761e46457e188ea9cdd68de2e62..40abfda439423d8c1dcce9c3293dc6f61a82fcb8 100644 (file)
@@ -267,6 +267,15 @@ BOOST_AUTO_TEST_CASE (crop_scale_window_test)
        check_image("test/data/crop_scale_window_test.png", "build/test/crop_scale_window_test.png");
 }
 
+/** Special cases of Image::crop_scale_window which triggered some valgrind warnings */
+BOOST_AUTO_TEST_CASE (crop_scale_window_test2)
+{
+       /* This 2048 does the same as J2KImageProxy does when it makes an image */
+       shared_ptr<Image> image (new Image(AV_PIX_FMT_XYZ12LE, dcp::Size(2048, 858), true, 2048));
+       image->crop_scale_window (Crop(279, 0, 0, 0), dcp::Size(1069, 448), dcp::Size(1069, 578), dcp::YUV_TO_RGB_REC709, VIDEO_RANGE_FULL, AV_PIX_FMT_RGB24, false, false);
+       image->crop_scale_window (Crop(2048, 0, 0, 0), dcp::Size(1069, 448), dcp::Size(1069, 578), dcp::YUV_TO_RGB_REC709, VIDEO_RANGE_FULL, AV_PIX_FMT_RGB24, false, false);
+}
+
 BOOST_AUTO_TEST_CASE (as_png_test)
 {
        shared_ptr<FFmpegImageProxy> proxy(new FFmpegImageProxy("test/data/3d_test/000001.png"));