fix static analysis issue 14/205114/4 accepted/tizen/unified/20190515.085007 submit/tizen/20190502.060308 submit/tizen/20190515.022033
authorzg84.zhang <zg84.zhang@samsung.com>
Tue, 30 Apr 2019 07:04:37 +0000 (15:04 +0800)
committerzg84.zhang <zg84.zhang@samsung.com>
Wed, 1 May 2019 01:12:00 +0000 (09:12 +0800)
Change-Id: I9b6fcbfbd23b67de0bcff4a1cd28c49702fee68e

client/ma.c
common/multi_assistant_settings.c

index 924a280acab57cc51aabc08aa0a3cb38244c575c..14ee78878498663e5fbf1f1623099c80691f2f65 100644 (file)
@@ -1350,13 +1350,13 @@ int ma_unset_wakeup_engine_command_cb(void)
 }
 
 bool __get_assistant_enable_status(const char* app_id, char* assistants) {
-       char* str_ptr = NULL;
-       char* temp = strtok_r(assistants, ";", &str_ptr);
+       char* rest = assistants;
+       char* temp = strtok_r(rest, ";", &rest);
        while(temp) {
                if (!strncmp(app_id, temp, MAX_ASSISTANT_INFO_STR_LEN)) {
                        return true;
                }
-               temp = strtok_r(NULL, ";", &str_ptr);
+               temp = strtok_r(rest, ";", &rest);
        }
        return false;
 }
@@ -1413,8 +1413,17 @@ int ma_assistant_info_get_app_id(ma_assistant_info_h handle, char** app_id) {
 int ma_assistant_info_get_enabled_status(ma_assistant_info_h handle, bool* status) {
        if (NULL == handle || NULL == status)
                return MA_ERROR_INVALID_PARAMETER;
+
+       char* appid = vconf_get_str(APPID_URL);
+       if (NULL == appid) {
+               return MA_ERROR_OPERATION_FAILED;
+       }
+
        assistant_info_t* info = (assistant_info_t*)handle;
-       *status = __get_assistant_enable_status(info->app_id, vconf_get_str(APPID_URL));
+       char id_buf[MAX_ASSISTANT_INFO_STR_LEN] = "";
+       snprintf(id_buf, MAX_ASSISTANT_INFO_STR_LEN, "%s", appid);
+       *status = __get_assistant_enable_status(info->app_id, id_buf);
+       free(appid);
        return MA_ERROR_NONE;
 }
 
index 798b4b73cec9780aa8cdd2c629f3815df7a5721b..8533834c0f240324280e432eba80df59a64cd664 100644 (file)
@@ -94,8 +94,11 @@ int ma_settings_set_voice_assistant_enabled(const char* app_id, bool enabled) {
                                char* tmp = strstr(enabled_assistants, app_id);
                                if (tmp) {
                                        char assistants[MAX_LEN] = "";
-                                       char* outptr = NULL;
-                                       char* as = strtok_r(enabled_assistants, ";", &outptr);
+                                       char old_assistants[MAX_LEN] = "";
+                                       /*to prevent memory leak for cut the string enabled_assistants*/
+                                       snprintf(old_assistants, MAX_LEN, "%s", enabled_assistants);
+                                       char* rest = old_assistants;
+                                       char* as = strtok_r(rest, ";", &rest);
                                        while (as) {
                                                if (strncmp(app_id, as, MAX_LEN)) {
                                                        if ((strlen(as) + strlen(assistants) + 1) <= MAX_LEN) {
@@ -109,7 +112,7 @@ int ma_settings_set_voice_assistant_enabled(const char* app_id, bool enabled) {
                                                                return res;
                                                        }
                                                }
-                                               as = strtok_r(NULL, ";", &outptr);
+                                               as = strtok_r(rest, ";", &rest);
                                        }
                                        if (vconf_set_str(ENABLED_ASSISTANT_URL, assistants)) {
                                                res = MA_ERROR_NONE;