[fix] add ifstream read fail check
authorYelin Jeong <yelini.jeong@samsung.com>
Thu, 29 Jun 2023 02:15:33 +0000 (11:15 +0900)
committer추지호/SoC Architecture팀(SR)/삼성전자 <jiho.chu@samsung.com>
Thu, 29 Jun 2023 07:43:45 +0000 (16:43 +0900)
This patch adds failure check when ifstream read fails.

Signed-off-by: Yelin Jeong <yelini.jeong@samsung.com>
src/core/npu/NPUdrvAPI_emul.cc
utils/trinity_cuse/trinity-cuse-triv2.cc

index 699c5077ad68f9e1514a3698b7fbc389597b5251..96b4cec30790ec007a650c88db100417a3b65695 100644 (file)
@@ -47,6 +47,11 @@ parseProfile23 (std::ifstream *ifs, npu_profile *profile) {
   T2PF_HEAD head;
   ifs->read ((char *) &head, sizeof (T2PF_HEAD));
 
+  if (!*ifs) {
+    logerr (TAG, "Could not read profile header (size : %u)", sizeof (T2PF_HEAD));
+    return -EINVAL;
+  }
+
   uint32_t total_dump = 0;
 
   /* Neural Network Accelerator (NNA) */
@@ -154,6 +159,11 @@ parseProfile24 (std::ifstream *ifs, npu_profile *profile) {
   T24PF_HEAD head;
   ifs->read ((char *) &head, sizeof (T24PF_HEAD));
 
+  if (!*ifs) {
+    logerr (TAG, "Could not read profile header (size : %u)", sizeof (T24PF_HEAD));
+    return -EINVAL;
+  }
+
   uint32_t total_dump = 0;
 
   /* Neural Network Accelerator (NNA) */
index 2de8fce60291936a345b97236933d788f772f1a7..a864cf9942fb69cef02a7f48df56e632ac92205f 100644 (file)
@@ -216,6 +216,11 @@ class EmulProfile {
     T2PF_HEAD head;
     ifs.read ((char *) &head, sizeof (T2PF_HEAD));
 
+    if (!ifs) {
+      std::cerr << "Could not read profile header (size : " << sizeof (T2PF_HEAD) << ")" << std::endl;
+      return -EINVAL;
+    }
+
     uint32_t total_dump = 0;
 
     /* Neural Network Accelerator (NNA) */
@@ -321,6 +326,11 @@ class EmulProfile {
     T24PF_HEAD head;
     ifs.read ((char *) &head, sizeof (T24PF_HEAD));
 
+    if (!ifs) {
+      std::cerr << "Could not read profile header (size : " << sizeof (T24PF_HEAD) << ")" << std::endl;
+      return -EINVAL;
+    }
+
     uint32_t total_dump = 0;
 
     /* Neural Network Accelerator (NNA) */