Fix issue that detected by static analysis tool 64/317164/3
authordyamy-lee <dyamy.lee@samsung.com>
Thu, 26 Dec 2024 07:06:15 +0000 (16:06 +0900)
committerdyamy-lee <dyamy.lee@samsung.com>
Thu, 26 Dec 2024 08:14:40 +0000 (17:14 +0900)
When you use strlen() to give string size in strncmp(), it needs +1 to include NULL character

Change-Id: I817c071d7ce9b7426e13d83564fb111eb983cd42

client/tts.c
client/tts_core.c
client/tts_tidl.c
common/tts_config_parser.c
server/ttsd_data.cpp
server/ttsd_engine_agent.c
server/ttse.c

index 950c16452fc2049cd44c791fe5fb34a0769a830f..2e6357a155fd6d2fba009c586dfd8537acb73455 100644 (file)
@@ -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 {
index 902c46602210d787f6e3541ac17dcd33772ffd08..e105ddff1d08f4d1d6f4aa367f3797342b3653d8 100644 (file)
@@ -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;
        }
index 3e29e16ed4123df6f74c3a6bdc5c417814af3995..231a5c16c4a4dba10d8f71d155ea194b166fe524 100644 (file)
@@ -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;
index 937f865dc54a551492248d94665139b2088ea772..aa06ee71e5fb6bfa2851d3162d8bb654c571d699 100644 (file)
@@ -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;
        }
index 532a8e2c0ae3e51ff67257c0617323f8356e1064..b77d1cf921a9f19a3e94dd089d6c91dd7dc21099 100644 (file)
@@ -421,7 +421,7 @@ int ttsd_data_set_used_voice(unsigned int uid, const char* lang, int type)
        /* Find voice */
        list<used_voice_s>& 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;
                }
index 443a6879ff2fbdf66035bfc2c01c0c5c56b82ec4..cde99a9a616013a4f0a387c79addb465742d15e7 100644 (file)
@@ -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);
index 2ccd2cd65a4670e0e6855a8e781aa12a76515ff4..7fcc900c725f0149dca68b43ffb4e812708ca690 100755 (executable)
@@ -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;
        }