Fix issue detected by static analysis tool 81/278681/8
authorInHong Han <inhong1.han@samsung.com>
Mon, 25 Jul 2022 05:29:28 +0000 (14:29 +0900)
committerInHong Han <inhong1.han@samsung.com>
Mon, 25 Jul 2022 08:02:57 +0000 (17:02 +0900)
Change-Id: I573bfa8478cad77c9f38f4eaa00304ea2d854bfa

plugins/wakeup-manager/src/wakeup_settings.cpp
src/service_plugin.cpp

index be28afe..e501e31 100644 (file)
@@ -341,6 +341,10 @@ string CWakeupSettings::get_default_assistant_appid()
 
 void CWakeupSettings::set_default_assistant_appid(std::string appid)
 {
+       if (appid.empty()) {
+               MWR_LOGE("appid is NULL");
+               return;
+       }
        if (appid.compare(get_default_assistant_appid()) == 0) {
                MWR_LOGE("Default assistant appid not changed, ignoring...");
                return;
index 780390a..706652d 100644 (file)
@@ -39,12 +39,12 @@ static int g_last_wakeup_event_id = 0;
 
 typedef struct {
        int id;
-       char* wakeup_word;
-       char* wakeup_appid;
-       unsigned char* extra_data;
-       size_t extra_data_length;
-       char* extra_data_desc;
-       CServicePlugin* plugin;
+       char* wakeup_word{nullptr};
+       char* wakeup_appid{nullptr};
+       unsigned char* extra_data{nullptr};
+       size_t extra_data_length{0};
+       char* extra_data_desc{nullptr};
+       CServicePlugin* plugin{nullptr};
 } AsyncParam;
 
 bool CServicePlugin::is_ui_panel_enabled()
@@ -209,7 +209,11 @@ static void process_wakeup_event_by_word_timer(void* data)
                        param->id = id;
                        param->wakeup_word = strdup(wakeup_word.c_str());
                        param->wakeup_appid = strdup(appid);
-                       param->extra_data = extra_data;
+                       if (extra_data && extra_data_length > 0) {
+                               param->extra_data = (unsigned char*)malloc(extra_data_length);
+                               if (param->extra_data)
+                                       memcpy(param->extra_data, extra_data, extra_data_length);
+                       }
                        param->extra_data_length = extra_data_length;
                        param->extra_data_desc = strdup(extra_data_desc.c_str());
                        param->plugin = plugin;
@@ -217,6 +221,9 @@ static void process_wakeup_event_by_word_timer(void* data)
                }
        }
 
+       free(extra_data);
+       extra_data = nullptr;
+
        MAS_LOGI("END");
        return;
 }