fixed uninitialized memory writing/reading in flann
authorIlya Lavrenov <ilya.lavrenov@itseez.com>
Thu, 3 Sep 2015 10:25:29 +0000 (13:25 +0300)
committerIlya Lavrenov <ilya.lavrenov@itseez.com>
Thu, 3 Sep 2015 10:25:29 +0000 (13:25 +0300)
modules/flann/include/opencv2/flann/kmeans_index.h

index 9c0f4e2..e119ceb 100644 (file)
@@ -384,6 +384,8 @@ public:
         }
 
         root_ = pool_.allocate<KMeansNode>();
+        std::memset(root_, 0, sizeof(KMeansNode));
+
         computeNodeStatistics(root_, indices_, (int)size_);
         computeClustering(root_, indices_, (int)size_, branching_,0);
     }
@@ -823,11 +825,11 @@ private:
             variance -= distance_(centers[c], ZeroIterator<ElementType>(), veclen_);
 
             node->childs[c] = pool_.allocate<KMeansNode>();
+            std::memset(node->childs[c], 0, sizeof(KMeansNode));
             node->childs[c]->radius = radiuses[c];
             node->childs[c]->pivot = centers[c];
             node->childs[c]->variance = variance;
             node->childs[c]->mean_radius = mean_radius;
-            node->childs[c]->indices = NULL;
             computeClustering(node->childs[c],indices+start, end-start, branching, level+1);
             start=end;
         }