From: Vladislav Vinogradov Date: Thu, 27 Aug 2015 13:09:37 +0000 (+0300) Subject: fix potential out-of-border access in gpu StereoBeliefPropagation X-Git-Tag: accepted/tizen/6.0/unified/20201030.111113~1314^2~169^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7ddc0bdd37690ac384e1bead43af7faf44931d65;p=platform%2Fupstream%2Fopencv.git fix potential out-of-border access in gpu StereoBeliefPropagation --- diff --git a/modules/gpu/src/stereobp.cpp b/modules/gpu/src/stereobp.cpp index 1677f33..3b827a3 100644 --- a/modules/gpu/src/stereobp.cpp +++ b/modules/gpu/src/stereobp.cpp @@ -213,8 +213,8 @@ namespace if (rthis.levels > 1) { - int less_rows = (rows + 1) / 2; - int less_cols = (cols + 1) / 2; + int less_rows = rows / 2; + int less_cols = cols / 2; u2.create(less_rows * rthis.ndisp, less_cols, rthis.msg_type); d2.create(less_rows * rthis.ndisp, less_cols, rthis.msg_type); @@ -283,8 +283,8 @@ namespace for (int i = 1; i < rthis.levels; ++i) { - cols_all[i] = (cols_all[i-1] + 1) / 2; - rows_all[i] = (rows_all[i-1] + 1) / 2; + cols_all[i] = cols_all[i-1] / 2; + rows_all[i] = rows_all[i-1] / 2; datas[i].create(rows_all[i] * rthis.ndisp, cols_all[i], rthis.msg_type); diff --git a/modules/gpu/test/test_calib3d.cpp b/modules/gpu/test/test_calib3d.cpp index ea4039a..80882d4 100644 --- a/modules/gpu/test/test_calib3d.cpp +++ b/modules/gpu/test/test_calib3d.cpp @@ -114,7 +114,9 @@ GPU_TEST_P(StereoBeliefPropagation, Regression) cv::Mat h_disp(disp); h_disp.convertTo(h_disp, disp_gold.depth()); - EXPECT_MAT_NEAR(disp_gold, h_disp, 0.0); + cv::Rect roi(0, 0, disp_gold.cols - 20, disp_gold.rows - 20); + + EXPECT_MAT_NEAR(disp_gold(roi), h_disp(roi), 0.0); } INSTANTIATE_TEST_CASE_P(GPU_Calib3D, StereoBeliefPropagation, ALL_DEVICES);