diff --git a/tensorflow/core/kernels/image/crop_and_resize_op.cc b/tensorflow/core/kernels/image/crop_and_resize_op.cc index 5c196df9cfe6c2..9d0f27d0a20ce0 100644 --- a/tensorflow/core/kernels/image/crop_and_resize_op.cc +++ b/tensorflow/core/kernels/image/crop_and_resize_op.cc @@ -71,6 +71,10 @@ static inline Status ParseAndCheckBoxSizes(const Tensor& boxes, if (boxes.dim_size(1) != 4) { return errors::InvalidArgument("boxes must have 4 columns"); } + Eigen::Tensor check = boxes.tensor().isfinite().all(); + if (!check()) { + return errors::InvalidArgument("boxes values must be finite"); + } // The shape of 'box_index' is [num_boxes]. if (box_index.dims() != 1) { return errors::InvalidArgument("box_index must be 1-D", diff --git a/tensorflow/python/ops/image_ops_test.py b/tensorflow/python/ops/image_ops_test.py index 7f4a093ca40950..d3c1bf1fdebc41 100644 --- a/tensorflow/python/ops/image_ops_test.py +++ b/tensorflow/python/ops/image_ops_test.py @@ -5710,7 +5710,19 @@ def testExpandAnimations(self): self.assertAllEqual(list(image2.shape), [12, 40, 20, 3]) self.assertAllEqual(image2, image3) - @parameterized.named_parameters( + def testImageCropAndResize(self): + # Test case for GitHub issue 42129 + message = "boxes values must be finite" + with self.assertRaisesRegex( + (errors.InvalidArgumentError, ValueError), message): + v = image_ops_impl.crop_and_resize_v2( + image=array_ops.zeros((2, 1, 1, 1)), + boxes=[[1.0e+40, 0, 0, 0]], + box_indices=[1], + crop_size=[1, 1]) + self.evaluate(v) + + @parameterized.named_parameters( ("_jpeg", "JPEG", "jpeg_merge_test1.jpg"), ("_png", "PNG", "lena_rgba.png"), ("_gif", "GIF", "scan.gif"),