From 8755ffbf3103482fa6a7945af76fb09ff7ed19d2 Mon Sep 17 00:00:00 2001 From: Boris Daskalov Date: Tue, 17 Mar 2015 16:23:03 +0200 Subject: [PATCH] Fix a bad free space check in icvGrowSeq. A difference of two pointers was casted to unsigned which can lead to overflow on 64-bit systems. --- modules/core/src/datastructs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/core/src/datastructs.cpp b/modules/core/src/datastructs.cpp index 9438fa2..76c3b2c 100644 --- a/modules/core/src/datastructs.cpp +++ b/modules/core/src/datastructs.cpp @@ -645,7 +645,7 @@ icvGrowSeq( CvSeq *seq, int in_front_of ) /* If there is a free space just after last allocated block and it is big enough then enlarge the last block. This can happen only if the new block is added to the end of sequence: */ - if( (unsigned)(ICV_FREE_PTR(storage) - seq->block_max) < CV_STRUCT_ALIGN && + if( (size_t)(ICV_FREE_PTR(storage) - seq->block_max) < CV_STRUCT_ALIGN && storage->free_space >= seq->elem_size && !in_front_of ) { int delta = storage->free_space / elem_size; -- 2.7.4