[Svace] Resolve unresolved svace issues
authorDongju Chae <dongju.chae@samsung.com>
Mon, 3 Aug 2020 07:23:48 +0000 (16:23 +0900)
committer채동주/On-Device Lab(SR)/Staff Engineer/삼성전자 <dongju.chae@samsung.com>
Mon, 3 Aug 2020 11:49:36 +0000 (20:49 +0900)
This patch resolves some svace issued, which includes
- UNINIT_LOCAL_VAR.EX
- DEREF_OF_NULL.ASSIGN
- MEMORY_LEAK.EX
- INTEGER_OVERFLOW
...

Signed-off-by: Dongju Chae <dongju.chae@samsung.com>
src/core/ne-handler.cc
src/core/npu/NPUdrvAPI_emul.cc
src/core/utils/ne-utils.cc
tests/unittests/ne_core_npu_test.cc

index 962e9b9..a8df60e 100644 (file)
@@ -630,7 +630,7 @@ HostHandler::runAsync (uint32_t modelid, const input_buffers *input,
   }
 
   /* check the given model before running */
-  if (!model->finalize ()) {
+  if (model != nullptr && !model->finalize ()) {
     logerr (TAG, "Failed to finalize the model. Please see the log messages\n");
     return -EINVAL;
   }
@@ -660,7 +660,7 @@ HostHandler::runInternal (uint32_t modelid, npu_input_opmode opmode,
   }
 
   /* check the given model before running */
-  if (!model->finalize ()) {
+  if (model != nullptr && !model->finalize ()) {
     logerr (TAG, "Failed to finalize the model. Please see the log messages\n");
     return -EINVAL;
   }
@@ -823,8 +823,8 @@ HostHandler::allocGenericBuffer (generic_buffers *buffers)
   return 0;
 
 free_buffer:
-  for (idx = idx - 1; idx >= 0; idx--) {
-    deallocGenericBuffer (&buffers->bufs[idx]);
+  while (idx != 0) {
+    deallocGenericBuffer (&buffers->bufs[--idx]);
   }
 
   return status;
index 90745c8..d2bec45 100644 (file)
@@ -326,7 +326,7 @@ TrinityEmulAPI::registerModel (model_config_t *model_config) const
   if (!initialized())
     return -EPERM;
 
-  if (model_config == nullptr)
+  if (model_config == nullptr || model_config->dbuf_fd < 0)
     return -EINVAL;
 
   EmulElement *elem = elem_map_.find (model_config->dbuf_fd);
@@ -335,12 +335,13 @@ TrinityEmulAPI::registerModel (model_config_t *model_config) const
 
   model_config_t * config = new model_config_t;
 
+  uint32_t dbuf_fd_unsigned = model_config->dbuf_fd;
   uint64_t internal_id = global_internal_id.fetch_add (1);
   uint64_t max_internal_id = 1ULL << TRINITY_SHIFT_MODEL_ID;
 
   internal_id = internal_id % max_internal_id;
 
-  model_config->id = model_config->dbuf_fd;
+  model_config->id = dbuf_fd_unsigned;
   model_config->id <<= TRINITY_SHIFT_MODEL_ID;
   model_config->id |= internal_id;
 
@@ -443,8 +444,10 @@ TrinityEmulAPI::runInput (input_config_t *input_config) const
       EmulTask *task = new EmulTask;
 
       status = task_map_.insert (taskid, task);
-      if (status != 0)
+      if (status != 0) {
+        delete [] segment_table;
         return status;
+      }
 
       auto func = std::bind (&EmulTask::run_emul, task,
           prog, prog_size, segment_table, num_segs);
index 647a92b..c2bbbde 100644 (file)
@@ -100,9 +100,6 @@ Logger::logwrite (loglevel l, module m, const char *format, ...)
 
   std::unique_lock<std::mutex> lock (m_);
 
-  char log_msg[MAX_LOG_MSG];
-  size_t log_len;
-
   time_t ltime = time (nullptr);
   char* time_str;
   va_list args;
@@ -115,7 +112,8 @@ Logger::logwrite (loglevel l, module m, const char *format, ...)
   time_str = asctime (localtime (&ltime));
   time_str[strcspn (time_str, "\n")] = '\x00';
 
-  log_len = snprintf (log_msg, MAX_LOG_MSG,
+  char log_msg[MAX_LOG_MSG];
+  int log_len = snprintf (log_msg, MAX_LOG_MSG,
       "[%s][%s][%s] ", loglevelstr[l], modulestr[m], time_str);
 
   va_start (args, format);
index 25da12e..9b956ff 100644 (file)
@@ -611,8 +611,6 @@ TEST (ne_core_npu_test, run_inference_async0_triv2)
   model_config_t model;
   std::future<int> f_ret;
   input_config_t input;
-  int *buf;
-  int buffer_dmabuf;
   int seg_dmabuf;
   int model_dmabuf;
   int num_devices;
@@ -633,6 +631,9 @@ TEST (ne_core_npu_test, run_inference_async0_triv2)
 
   EXPECT_EQ (api->registerModel (&model), 0);
 
+  int *buf = nullptr;
+  int buffer_dmabuf = -1;
+
   f_ret = std::async(std::launch::async,
       [&] () -> int {
         /** allocate input data */