matrix.cpp::setSize(): fixed out-of-bounds access on cv::Mat steps

pull/18473/head
Mario Emmenlauer 4 years ago
parent a5b8f163d7
commit 102d8f67cd
  1. 11
      modules/core/src/matrix.cpp

@ -236,13 +236,20 @@ void setSize( Mat& m, int _dims, const int* _sz, const size_t* _steps, bool auto
m.size.p[i] = s; m.size.p[i] = s;
if( _steps ) if( _steps )
{
if (i < _dims-1)
{ {
if (_steps[i] % esz1 != 0) if (_steps[i] % esz1 != 0)
{ {
CV_Error(Error::BadStep, "Step must be a multiple of esz1"); CV_Error_(Error::BadStep, ("Step %zu for dimension %d must be a multiple of esz1 %zu", _steps[i], i, esz1));
} }
m.step.p[i] = i < _dims-1 ? _steps[i] : esz; m.step.p[i] = _steps[i];
}
else
{
m.step.p[i] = esz;
}
} }
else if( autoSteps ) else if( autoSteps )
{ {

Loading…
Cancel
Save