LOGD("data set count = %u", fvh.data_set_cnt);
}
+bool FaceRecognitionDSM::isHeaderValid(const FeaVecHeader &fvh, size_t max_size)
+{
+ return !(FeatureVectorManager::feature_vector_signature != fvh.signature || max_size <= fvh.feature_size ||
+ max_size <= fvh.label_cnt || max_size <= fvh.data_set_cnt);
+}
+
FaceRecognitionDSM::FaceRecognitionDSM() : DataSetManager()
{}
// So read feature vector header from the end of the file.
inFile.seekg(static_cast<int>(sizeof(FeaVecHeader)) * -1, ios::end);
+ size_t file_size = inFile.tellg();
FeaVecHeader fvh;
inFile.read((char *) &fvh, sizeof(FeaVecHeader));
printHeader(fvh);
- if (FeatureVectorManager::feature_vector_signature != fvh.signature)
+ if (!isHeaderValid(fvh, file_size))
throw InvalidOperation("Wrong feature vector header.");
/*