From: dyamy-lee Date: Thu, 26 Dec 2024 07:06:15 +0000 (+0900) Subject: Fix issue that detected by static analysis tool X-Git-Tag: accepted/tizen/9.0/unified/20241230.165558~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4317f0196fdbeb6f27e865fb7f2d1337d4f344b6;p=platform%2Fcore%2Fuifw%2Ftts.git Fix issue that detected by static analysis tool When you use strlen() to give string size in strncmp(), it needs +1 to include NULL character Change-Id: I817c071d7ce9b7426e13d83564fb111eb983cd42 --- diff --git a/client/tts.c b/client/tts.c index 950c1645..2e6357a1 100644 --- a/client/tts.c +++ b/client/tts.c @@ -94,7 +94,7 @@ static void __tts_config_voice_changed_cb(const char* before_lang, int before_vo tts_core_notify_default_voice_changed(client, before_lang, before_voice_type, language, voice_type); /* Check whether language is changed or not. If it is changed, make 'text_repeat' NULL */ - if (0 != strncmp(before_lang, language, strlen(before_lang))) { + if (0 != strncmp(before_lang, language, strlen(before_lang) + 1)) { tts_client_set_repeat_text(client, NULL); } } else { diff --git a/client/tts_core.c b/client/tts_core.c index 902c4660..e105ddff 100644 --- a/client/tts_core.c +++ b/client/tts_core.c @@ -194,7 +194,7 @@ static int __pkgmgr_status_cb(uid_t target_uid, int req_id, const char *type, co return 0; } - if (0 != strncmp(g_engine_name, pkgname, strlen(g_engine_name))) { + if (0 != strncmp(g_engine_name, pkgname, strlen(g_engine_name) + 1)) { SLOG(LOG_DEBUG, TAG_TTSC, "[DEBUG] this is not tts engine"); return 0; } @@ -204,7 +204,7 @@ static int __pkgmgr_status_cb(uid_t target_uid, int req_id, const char *type, co return 0; } - if (0 == strncmp(key, "start", strlen(key))) { + if (0 == strncmp(key, "start", strlen(key) + 1)) { if (NULL != g_pkgmgr_status) { free(g_pkgmgr_status); g_pkgmgr_status = NULL; @@ -214,14 +214,14 @@ static int __pkgmgr_status_cb(uid_t target_uid, int req_id, const char *type, co g_pkgmgr_status = strdup(val); SLOG(LOG_INFO, TAG_TTSC, "[INFO] pkgmgr status. key(%s), status(%s)", key, g_pkgmgr_status); - if ((0 == strncmp(val, "update", strlen(val) || 0 == strncmp(val, "uninstall", strlen(val))))) { + if (0 == strncmp(val, "update", strlen(val) + 1) || 0 == strncmp(val, "uninstall", strlen(val) + 1)) { SLOG(LOG_ERROR, TAG_TTSC, "[INFO] start to install."); g_engine_update_status = 1; } } - } else if (0 == strncmp(key, "end", strlen(key)) && val && 0 == strncmp(val, "ok", strlen(val))) { + } else if (0 == strncmp(key, "end", strlen(key) + 1) && val && 0 == strncmp(val, "ok", strlen(val) + 1)) { if (g_pkgmgr_status) { - if (0 == strncmp(g_pkgmgr_status, "install", strlen(g_pkgmgr_status)) || 0 == strncmp(g_pkgmgr_status, "update", strlen(g_pkgmgr_status))) { + if (0 == strncmp(g_pkgmgr_status, "install", strlen(g_pkgmgr_status) + 1) || 0 == strncmp(g_pkgmgr_status, "update", strlen(g_pkgmgr_status) + 1)) { SLOG(LOG_ERROR, TAG_TTSC, "[INFO] finish to install"); g_engine_update_status = 0; @@ -1677,7 +1677,7 @@ int tts_core_get_private_data(tts_client_s* client, const char* key, char** data return ret; } - if (0 == strncmp(*data, "NULL", strlen(*data))) { + if (0 == strncmp(*data, "NULL", strlen(*data) + 1)) { free(*data); *data = NULL; } diff --git a/client/tts_tidl.c b/client/tts_tidl.c index 3e29e16e..231a5c16 100644 --- a/client/tts_tidl.c +++ b/client/tts_tidl.c @@ -82,7 +82,7 @@ static void __notify_cb(void *user_data, int pid, int uid, bundle *msg) bundle_get_str(msg, TTS_BUNDLE_METHOD, &method); - if (0 == strncmp(TTSD_METHOD_HELLO, method, strlen(TTSD_METHOD_HELLO))) { + if (0 == strncmp(TTSD_METHOD_HELLO, method, strlen(TTSD_METHOD_HELLO) + 1)) { char* credential_needed = NULL; char* service_state = NULL; char* ret = NULL; @@ -101,22 +101,22 @@ static void __notify_cb(void *user_data, int pid, int uid, bundle *msg) } else { SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to get message(TTSD_METHOD_HELLO). pid(%d) uid(%u)", pid, u_uid); } - } else if (0 == strncmp(TTSD_METHOD_UTTERANCE_STARTED, method, strlen(TTSD_METHOD_UTTERANCE_STARTED))) { + } else if (0 == strncmp(TTSD_METHOD_UTTERANCE_STARTED, method, strlen(TTSD_METHOD_UTTERANCE_STARTED) + 1)) { bundle_get_str(msg, TTS_BUNDLE_MESSAGE, &val); if (val) { tts_core_notify_utt_started(client, atoi(val)); } - } else if (0 == strncmp(TTSD_METHOD_UTTERANCE_COMPLETED, method, strlen(TTSD_METHOD_UTTERANCE_COMPLETED))) { + } else if (0 == strncmp(TTSD_METHOD_UTTERANCE_COMPLETED, method, strlen(TTSD_METHOD_UTTERANCE_COMPLETED) + 1)) { bundle_get_str(msg, TTS_BUNDLE_MESSAGE, &val); if (val) { tts_core_notify_utt_completeted(client, atoi(val)); } - } else if (0 == strncmp(TTSD_METHOD_SET_STATE, method, strlen(TTSD_METHOD_SET_STATE))) { + } else if (0 == strncmp(TTSD_METHOD_SET_STATE, method, strlen(TTSD_METHOD_SET_STATE) + 1)) { bundle_get_str(msg, TTS_BUNDLE_MESSAGE, &val); if (val) { tts_core_notify_state_changed(client, (tts_state_e)atoi(val)); } - } else if (0 == strncmp(TTSD_METHOD_SET_SERVICE_STATE, method, strlen(TTSD_METHOD_SET_SERVICE_STATE))) { + } else if (0 == strncmp(TTSD_METHOD_SET_SERVICE_STATE, method, strlen(TTSD_METHOD_SET_SERVICE_STATE) + 1)) { char* before_state = NULL; char* current_state = NULL; bundle_get_str(msg, TTS_BUNDLE_BEFORE_STATE, &before_state); @@ -125,7 +125,7 @@ static void __notify_cb(void *user_data, int pid, int uid, bundle *msg) if (before_state && current_state) { tts_core_notify_service_state_changed(client, (tts_service_state_e)atoi(before_state), (tts_service_state_e)atoi(current_state)); } - } else if (0 == strncmp(TTSD_METHOD_SEND_PCM, method, strlen(TTSD_METHOD_SEND_PCM))) { + } else if (0 == strncmp(TTSD_METHOD_SEND_PCM, method, strlen(TTSD_METHOD_SEND_PCM) + 1)) { char* uttid = NULL; char* event = NULL; void* pcm_data = NULL; @@ -144,7 +144,7 @@ static void __notify_cb(void *user_data, int pid, int uid, bundle *msg) } else { SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to get message(TTSD_METHOD_SEND_PCM). pid(%d) uid(%u)", pid, u_uid); } - } else if (0 == strncmp(TTSD_METHOD_ERROR, method, strlen(TTSD_METHOD_ERROR))) { + } else if (0 == strncmp(TTSD_METHOD_ERROR, method, strlen(TTSD_METHOD_ERROR) + 1)) { char *uttid = NULL; char *reason = NULL; char *err_msg = NULL; diff --git a/common/tts_config_parser.c b/common/tts_config_parser.c index 937f865d..aa06ee71 100644 --- a/common/tts_config_parser.c +++ b/common/tts_config_parser.c @@ -448,7 +448,7 @@ int tts_parser_get_engine_info(const char* path, tts_engine_info_s** engine_info // Avoid to parse non-xml file char* file_ext = strrchr(path, '.'); - if (NULL == ++file_ext || (file_ext && 0 != strncmp("xml", file_ext, strlen(file_ext)))) { + if (NULL == ++file_ext || (file_ext && 0 != strncmp("xml", file_ext, strlen(file_ext) + 1))) { SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] File extention is not XML type, file_ext(%s)", (file_ext) ? file_ext : "NULL"); return -1; } diff --git a/server/ttsd_data.cpp b/server/ttsd_data.cpp index 532a8e2c..b77d1cf9 100644 --- a/server/ttsd_data.cpp +++ b/server/ttsd_data.cpp @@ -421,7 +421,7 @@ int ttsd_data_set_used_voice(unsigned int uid, const char* lang, int type) /* Find voice */ list& usedVoices = app_data->m_used_voice; for (auto& voice : usedVoices) { - if (0 == strncmp(lang, voice.lang, strlen(lang)) && type == voice.vctype) { + if (0 == strncmp(lang, voice.lang, strlen(lang) + 1) && type == voice.vctype) { SLOG(LOG_DEBUG, tts_tag(), "[DATA] The voice is already registered (%s)(%d)", lang, type); return 0; } diff --git a/server/ttsd_engine_agent.c b/server/ttsd_engine_agent.c index 443a6879..cde99a9a 100644 --- a/server/ttsd_engine_agent.c +++ b/server/ttsd_engine_agent.c @@ -535,7 +535,7 @@ bool ttsd_engine_agent_is_same_engine(const char* engine_id) } /* compare current engine and engine id.*/ - if (NULL != g_engine_info->engine_uuid && 0 == strncmp(g_engine_info->engine_uuid, engine_id, strlen(engine_id))) { + if (NULL != g_engine_info->engine_uuid && 0 == strncmp(g_engine_info->engine_uuid, engine_id, strlen(engine_id) + 1)) { return true; } @@ -558,7 +558,7 @@ bool ttsd_engine_select_valid_voice(const char* lang, int type, const char* ptts (NULL == lang) ? "NULL" : lang, type, (NULL == ptts_id) ? "NULL" : ptts_id, (NULL == g_engine_info->default_lang) ? "NULL" : g_engine_info->default_lang, g_engine_info->default_vctype); /* case 1 : Both are default */ - if (0 == strncmp(lang, "default", strlen(lang)) && 0 == type) { + if (0 == strncmp(lang, "default", strlen(lang) + 1) && 0 == type) { if (NULL != g_engine_info->default_lang) { *out_lang = strdup(g_engine_info->default_lang); } else { @@ -595,16 +595,16 @@ bool ttsd_engine_select_valid_voice(const char* lang, int type, const char* ptts voice_s* voice; /* case 2 : lang and type are not default type */ - if (0 != strncmp(lang, "default", strlen("default")) && 0 != type) { + if (0 != strncmp(lang, "default", strlen("default") + 1) && 0 != type) { iter = g_list_first(voice_list); while (NULL != iter) { /* Get handle data from list */ voice = iter->data; - if (0 == strncmp(voice->language, lang, strlen(lang)) && voice->type == type) { + if (0 == strncmp(voice->language, lang, strlen(lang) + 1) && voice->type == type) { if (type == TTSE_VOICE_TYPE_PERSONAL && NULL!= ptts_id) { - if (0 != strncmp(voice->ptts_id, ptts_id, strlen(voice->ptts_id))) { + if (0 != strncmp(voice->ptts_id, ptts_id, strlen(voice->ptts_id) + 1)) { iter = g_list_next(iter); continue; } @@ -621,9 +621,9 @@ bool ttsd_engine_select_valid_voice(const char* lang, int type, const char* ptts iter = g_list_next(iter); } - } else if (0 != strncmp(lang, "default", strlen("default")) && 0 == type) { // default type != personal_type + } else if (0 != strncmp(lang, "default", strlen("default") + 1) && 0 == type) { // default type != personal_type /* Only type is default */ - if (0 == strncmp(lang, g_engine_info->default_lang, strlen(g_engine_info->default_lang))) { + if (0 == strncmp(lang, g_engine_info->default_lang, strlen(g_engine_info->default_lang) + 1)) { *out_lang = strdup(g_engine_info->default_lang); *out_type = g_engine_info->default_vctype; *out_ptts_id = NULL; @@ -635,7 +635,7 @@ bool ttsd_engine_select_valid_voice(const char* lang, int type, const char* ptts /* Get handle data from list */ voice = iter->data; - if (0 == strncmp(voice->language, lang, strlen(lang))) { + if (0 == strncmp(voice->language, lang, strlen(lang) + 1)) { voice_selected = voice; if (voice->type == g_engine_info->default_vctype) { voice_selected = voice; @@ -652,7 +652,7 @@ bool ttsd_engine_select_valid_voice(const char* lang, int type, const char* ptts result = true; } } - } else if (0 == strncmp(lang, "default", strlen("default")) && 0 != type) { + } else if (0 == strncmp(lang, "default", strlen("default") + 1) && 0 != type) { /* Only lang is default */ if (type == g_engine_info->default_vctype) { // default type != personal_type *out_lang = strdup(g_engine_info->default_lang); diff --git a/server/ttse.c b/server/ttse.c index 2ccd2cd6..7fcc900c 100755 --- a/server/ttse.c +++ b/server/ttse.c @@ -79,7 +79,7 @@ static bool __is_default_engine() } SLOG(LOG_DEBUG, tts_tag(), "[Server] TTS Default Engine(%s), appId(%s)", engine, appid); - if (0 == strncmp(engine, appid, strlen(engine))) { + if (0 == strncmp(engine, appid, strlen(engine) + 1)) { free(engine); return TRUE; }