mv_machine_learning: check if header is valid or not 79/290479/3
authorInki Dae <inki.dae@samsung.com>
Mon, 27 Mar 2023 08:01:36 +0000 (17:01 +0900)
committerInki Dae <inki.dae@samsung.com>
Tue, 28 Mar 2023 04:48:15 +0000 (13:48 +0900)
[Version] : 0.27.10
[Issue type] : bug fix

Checked if feature vector header is valid or not after reading the feature
vector file. This will fix svace issue, TAINTED_INT.PTR.

Change-Id: I213a52b235468258e4708e38cbc2d800900d0fff
Signed-off-by: Inki Dae <inki.dae@samsung.com>
mv_machine_learning/face_recognition/include/face_recognition_dsm.h
mv_machine_learning/face_recognition/src/face_recognition_dsm.cpp
packaging/capi-media-vision.spec

index 9e52a245c0834e02570a1f492fca52cbd06e1e9d..844d1c36a258a00b0e97b153b4fd5d587f315086 100644 (file)
@@ -26,6 +26,7 @@ class FaceRecognitionDSM : public DataSetManager
 {
 private:
        void printHeader(FeaVecHeader &fvh);
+       bool isHeaderValid(const FeaVecHeader &fvh, size_t max_size);
 
 public:
        FaceRecognitionDSM();
index 793b1cd25f1c5370baffd4de555ae1418364e92f..559133b6709eab01059ab486c5751e259348ceb0 100644 (file)
@@ -33,6 +33,12 @@ void FaceRecognitionDSM::printHeader(FeaVecHeader &fvh)
        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()
 {}
 
@@ -69,6 +75,7 @@ void FaceRecognitionDSM::loadDataSet(const string file_name, unsigned int new_la
        // 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));
@@ -79,7 +86,7 @@ void FaceRecognitionDSM::loadDataSet(const string file_name, unsigned int new_la
 
        printHeader(fvh);
 
-       if (FeatureVectorManager::feature_vector_signature != fvh.signature)
+       if (!isHeaderValid(fvh, file_size))
                throw InvalidOperation("Wrong feature vector header.");
 
        /*
index 9ce2e31b312fd73bb45c5c98a31fe11eb7226d29..6772b911a44aa1a271e1b57fd795751f54b736db 100644 (file)
@@ -1,6 +1,6 @@
 Name:        capi-media-vision
 Summary:     Media Vision library for Tizen Native API
-Version:     0.27.9
+Version:     0.27.10
 Release:     0
 Group:       Multimedia/Framework
 License:     Apache-2.0 and BSD-3-Clause