imgproc(warpAffine): avoid buffer indexes overflow in SIMD code

pull/19628/head
Alexander Alekhin 4 years ago
parent 20a46b31cd
commit fadb25baf8
  1. 2
      modules/imgproc/src/imgwarp.cpp
  2. 20
      modules/imgproc/test/test_imgwarp.cpp

@ -446,7 +446,7 @@ struct RemapVec_8u
{
int cn = _src.channels(), x = 0, sstep = (int)_src.step;
if( (cn != 1 && cn != 3 && cn != 4) || sstep > 0x8000 )
if( (cn != 1 && cn != 3 && cn != 4) || sstep >= 0x8000 )
return 0;
const uchar *S0 = _src.ptr(), *S1 = _src.ptr(1);

@ -1781,6 +1781,26 @@ TEST(Imgproc_Warp, multichannel)
}
}
TEST(Imgproc_Warp, regression_19566) // valgrind should detect problem if any
{
const Size imgSize(8192, 8);
Mat inMat = Mat::zeros(imgSize, CV_8UC4);
Mat outMat = Mat::zeros(imgSize, CV_8UC4);
warpAffine(
inMat,
outMat,
getRotationMatrix2D(Point2f(imgSize.width / 2.0f, imgSize.height / 2.0f), 45.0, 1.0),
imgSize,
INTER_LINEAR,
cv::BORDER_CONSTANT,
cv::Scalar(0.0, 0.0, 0.0, 255.0)
);
}
TEST(Imgproc_GetAffineTransform, singularity)
{
Point2f A_sample[3];

Loading…
Cancel
Save