From 184b6e314c236ba9c57ff583d49b27ac6d401e23 Mon Sep 17 00:00:00 2001 From: Yan Wang Date: Mon, 10 Nov 2014 15:41:04 +0800 Subject: [PATCH] Fix canny segment fault (Bug #3978) Avoid stack overflow based on std::vector cause std::vector::resize() segmentation fault. --- modules/imgproc/src/canny.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/imgproc/src/canny.cpp b/modules/imgproc/src/canny.cpp index 26d499ee16..1311d5abb9 100644 --- a/modules/imgproc/src/canny.cpp +++ b/modules/imgproc/src/canny.cpp @@ -453,7 +453,7 @@ void cv::Canny( InputArray _src, OutputArray _dst, if ((stack_top - stack_bottom) + src.cols > maxsize) { int sz = (int)(stack_top - stack_bottom); - maxsize = maxsize * 3/2; + maxsize = std::max(maxsize * 3/2, sz + src.cols); stack.resize(maxsize); stack_bottom = &stack[0]; stack_top = stack_bottom + sz;