From 9948ed88b04f914e65fed9222eba064d3556cc79 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky <no@email> Date: Sat, 4 Dec 2010 15:31:42 +0000 Subject: [PATCH] fixed crash in cvDrawContours when abs(maxLevel) is too big --- modules/core/src/drawing.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/core/src/drawing.cpp b/modules/core/src/drawing.cpp index c8fbc3c53..56cac1515 100644 --- a/modules/core/src/drawing.cpp +++ b/modules/core/src/drawing.cpp @@ -2033,12 +2033,14 @@ cvDrawContours( void* _img, CvSeq* contour, scalarToRawData( externalColor, ext_buf, img.type(), 0 ); scalarToRawData( holeColor, hole_buf, img.type(), 0 ); + maxLevel = MAX(maxLevel, INT_MIN-2); + maxLevel = MIN(maxLevel, INT_MAX-1); + if( maxLevel < 0 ) { h_next = contour->h_next; contour->h_next = 0; maxLevel = -maxLevel+1; - maxLevel -= maxLevel < 0; } cvInitTreeNodeIterator( &iterator, contour, maxLevel );