Fixed out of bound reading in makeAgastOffsets
authorVitaly Tuzov <terfendail@mediana.jetos.com>
Wed, 10 May 2017 13:21:22 +0000 (16:21 +0300)
committerVitaly Tuzov <terfendail@mediana.jetos.com>
Wed, 10 May 2017 13:21:22 +0000 (16:21 +0300)
modules/features2d/src/agast_score.cpp

index ad9b448..ac80077 100644 (file)
@@ -82,10 +82,15 @@ void makeAgastOffsets(int pixel[16], int rowStride, int type)
                               type == AgastFeatureDetector::AGAST_7_12s ? offsets12s :
                               type == AgastFeatureDetector::AGAST_5_8 ? offsets8  : 0;
 
+    const int offsets_len = type == AgastFeatureDetector::OAST_9_16 ? 16 :
+                            type == AgastFeatureDetector::AGAST_7_12d ? 12 :
+                            type == AgastFeatureDetector::AGAST_7_12s ? 12 :
+                            type == AgastFeatureDetector::AGAST_5_8 ? 8 : 0;
+
     CV_Assert(pixel && offsets);
 
     int k = 0;
-    for( ; k < 16; k++ )
+    for( ; k < offsets_len; k++ )
         pixel[k] = offsets[k][0] + offsets[k][1] * rowStride;
 }