From 7335fa44f530314c1edac768e4ab04d840c1be38 Mon Sep 17 00:00:00 2001 From: "zg84.zhang" Date: Tue, 30 Apr 2019 15:04:37 +0800 Subject: [PATCH] fix static analysis issue Change-Id: I9b6fcbfbd23b67de0bcff4a1cd28c49702fee68e --- client/ma.c | 17 +++++++++++++---- common/multi_assistant_settings.c | 9 ++++++--- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/client/ma.c b/client/ma.c index 924a280..14ee788 100644 --- a/client/ma.c +++ b/client/ma.c @@ -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; } diff --git a/common/multi_assistant_settings.c b/common/multi_assistant_settings.c index 798b4b7..8533834 100644 --- a/common/multi_assistant_settings.c +++ b/common/multi_assistant_settings.c @@ -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; -- 2.34.1