From: sooyeon.kim Date: Mon, 23 Jan 2017 11:56:12 +0000 (+0900) Subject: Add null checker and strdup checker X-Git-Tag: accepted/tizen/3.0/common/20170224.130006~9 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Ftts.git;a=commitdiff_plain;h=0702758480327dc6f63fb99e15bce64d3a9965bb Add null checker and strdup checker Change-Id: I7113002c5758cbd69f742dbd471944e08de30d8a Signed-off-by: sooyeon.kim --- diff --git a/common/tts_config_mgr.c b/common/tts_config_mgr.c index 8259e2c..10d1952 100755 --- a/common/tts_config_mgr.c +++ b/common/tts_config_mgr.c @@ -87,7 +87,7 @@ int __tts_config_mgr_check_engine_is_valid(const char* engine_id) return -1; } - if (0 == strcmp(engine_id, engine_info->uuid)) { + if (NULL != engine_info->uuid && 0 == strcmp(engine_id, engine_info->uuid)) { SLOG(LOG_DEBUG, tts_tag(), "Default engine is valid : %s", engine_id); return 0; } @@ -108,11 +108,25 @@ int __tts_config_mgr_check_engine_is_valid(const char* engine_id) return TTS_CONFIG_ERROR_OPERATION_FAILED; } - if (NULL != g_config_info->engine_id) free(g_config_info->engine_id); - if (NULL != g_config_info->setting) free(g_config_info->setting); + if (NULL != engine_info->uuid) { + if (NULL != g_config_info->engine_id) { + free(g_config_info->engine_id); + g_config_info->engine_id = NULL; + } + g_config_info->engine_id = strdup(engine_info->uuid); + } + if (NULL != engine_info->setting) { + if (NULL != g_config_info->setting) { + free(g_config_info->setting); + g_config_info->setting = NULL; + } + g_config_info->setting = strdup(engine_info->setting); + } - g_config_info->engine_id = strdup(engine_info->uuid); - g_config_info->setting = strdup(engine_info->setting); + if (NULL == g_config_info->engine_id || NULL == g_config_info->setting) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to strdup engine_info"); + return -1; + } SLOG(LOG_DEBUG, tts_tag(), "Default engine is changed : %s", g_config_info->engine_id); @@ -136,7 +150,12 @@ int __tts_config_mgr_check_engine_is_valid(const char* engine_id) is_valid_voice = true; free(g_config_info->language); + g_config_info->language = NULL; g_config_info->language = strdup(voice->language); + if (NULL == g_config_info->language) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to strdup language"); + return TTS_CONFIG_ERROR_OPERATION_FAILED; + } g_config_info->type = voice->type; SLOG(LOG_DEBUG, tts_tag(), "Default voice is changed : lang(%s) type(%d)", voice->language, voice->type); @@ -153,6 +172,7 @@ int __tts_config_mgr_check_engine_is_valid(const char* engine_id) /* Select first voice as default */ if (NULL != g_config_info->language) { free(g_config_info->language); + g_config_info->language = NULL; iter_voice = g_slist_nth(engine_info->voices, 0); if (NULL == iter_voice) { @@ -167,6 +187,10 @@ int __tts_config_mgr_check_engine_is_valid(const char* engine_id) } g_config_info->language = strdup(voice->language); + if (NULL == g_config_info->language) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to strdup language"); + return TTS_CONFIG_ERROR_OPERATION_FAILED; + } g_config_info->type = voice->type; SLOG(LOG_DEBUG, tts_tag(), "Default voice is changed : lang(%s) type(%d)", voice->language, voice->type); } @@ -354,16 +378,28 @@ Eina_Bool tts_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handl /* engine changed */ if (NULL != engine || NULL != setting) { if (NULL != engine) { - if (NULL != g_config_info->engine_id) + if (NULL != g_config_info->engine_id) { free(g_config_info->engine_id); + g_config_info->engine_id = NULL; + } g_config_info->engine_id = strdup(engine); + if (NULL == g_config_info->engine_id) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to strdup engine_id"); + return ECORE_CALLBACK_DONE; + } } if (NULL != setting) { - if (NULL != g_config_info->setting) + if (NULL != g_config_info->setting) { free(g_config_info->setting); + g_config_info->setting = NULL; + } g_config_info->setting = strdup(setting); + if (NULL == g_config_info->setting) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to strdup setting"); + return ECORE_CALLBACK_DONE; + } } SECURE_SLOG(LOG_DEBUG, tts_tag(), "Engine change(%s)", g_config_info->engine_id); @@ -399,10 +435,15 @@ Eina_Bool tts_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handl before_type = g_config_info->type; if (NULL != lang) { - if (NULL != g_config_info->language) + if (NULL != g_config_info->language) { free(g_config_info->language); + g_config_info->language = NULL; + } g_config_info->language = strdup(lang); + if (NULL == g_config_info->language) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to strdup lang"); + } } if (-1 != voice_type) { g_config_info->type = voice_type; @@ -567,7 +608,12 @@ int __tts_config_set_auto_language() before_type = g_config_info->type; free(g_config_info->language); + g_config_info->language = NULL; g_config_info->language = strdup(temp_lang); + if (NULL == g_config_info->language) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to strdup temp_lang"); + return -1; + } SECURE_SLOG(LOG_DEBUG, tts_tag(), "[Config] Default voice : lang(%s) type(%d)", g_config_info->language, g_config_info->type); @@ -638,12 +684,18 @@ int __tts_config_set_auto_language() if (NULL != g_config_info->language) { free(g_config_info->language); + g_config_info->language = NULL; g_config_info->language = strdup(tmp_language); + if (NULL == g_config_info->language) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to strdup tmp_language"); + return -1; + } } g_config_info->type = tmp_type; free(tmp_language); + tmp_language = NULL; } return 0; @@ -1130,7 +1182,12 @@ int tts_config_mgr_initialize(int uid) if (NULL != tmp_language) { if (NULL != g_config_info->language) { free(g_config_info->language); + g_config_info->language = NULL; g_config_info->language = strdup(tmp_language); + if (NULL == g_config_info->language) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to strdup tmp_language"); + return TTS_CONFIG_ERROR_OPERATION_FAILED; + } } g_config_info->type = tmp_type; @@ -1498,8 +1555,10 @@ int tts_config_mgr_set_engine(const char* engine) continue; } - if (NULL != g_config_info->engine_id) + if (NULL != g_config_info->engine_id) { free(g_config_info->engine_id); + g_config_info->engine_id = NULL; + } g_config_info->engine_id = strdup(engine); @@ -1545,6 +1604,7 @@ int tts_config_mgr_set_engine(const char* engine) if (false == is_valid_voice) { if (NULL != g_config_info->language) { free(g_config_info->language); + g_config_info->language = NULL; iter_voice = g_slist_nth(engine_info->voices, 0); if (NULL != iter_voice) { @@ -1688,7 +1748,12 @@ int tts_config_mgr_set_voice(const char* language, int type) return TTS_CONFIG_ERROR_OPERATION_FAILED; } free(g_config_info->language); + g_config_info->language = NULL; g_config_info->language = strdup(language); + if (NULL == g_config_info->language) { + SLOG(LOG_ERROR, tts_tag(), "Fail to strdup language"); + return TTS_CONFIG_ERROR_OPERATION_FAILED; + } g_config_info->type = type; } else {