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

This commit is contained in:
Alexander Alekhin 2021-02-25 20:16:50 +00:00
parent 20a46b31cd
commit fadb25baf8
2 changed files with 21 additions and 1 deletions

View File

@ -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);

View File

@ -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];