From e76924ef0d63154da973b7cf10ae228b2790aea1 Mon Sep 17 00:00:00 2001 From: Vincent Rabaud Date: Wed, 15 Jan 2025 11:07:43 +0100 Subject: [PATCH] Don't overflow pointer addition In both cases we add negative value (as unsigned type), so pointer addition wraps, which is undefined behavior. --- modules/imgproc/src/imgwarp.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/imgproc/src/imgwarp.cpp b/modules/imgproc/src/imgwarp.cpp index 0f91ff2fc5..c8371daf2d 100644 --- a/modules/imgproc/src/imgwarp.cpp +++ b/modules/imgproc/src/imgwarp.cpp @@ -955,7 +955,7 @@ static void remapBicubic( const Mat& _src, Mat& _dst, const Mat& _xy, sum += S[0]*w[8] + S[cn]*w[9] + S[cn*2]*w[10] + S[cn*3]*w[11]; S += sstep; sum += S[0]*w[12] + S[cn]*w[13] + S[cn*2]*w[14] + S[cn*3]*w[15]; - S += 1 - sstep*3; + S -= sstep * 3 - 1; D[k] = castOp(sum); } } @@ -988,9 +988,9 @@ static void remapBicubic( const Mat& _src, Mat& _dst, const Mat& _xy, for(int i = 0; i < 4; i++, w += 4 ) { int yi = y[i]; - const T* S = S0 + yi*sstep; if( yi < 0 ) continue; + const T* S = S0 + yi*sstep; if( x[0] >= 0 ) sum += (S[x[0]] - cv)*w[0]; if( x[1] >= 0 )