change strdup to array 62/113762/12
authorWonnam Jang <wn.jang@samsung.com>
Thu, 9 Feb 2017 00:53:35 +0000 (09:53 +0900)
committerWonnam Jang <wn.jang@samsung.com>
Wed, 15 Feb 2017 02:06:35 +0000 (11:06 +0900)
Change-Id: I776352564c8a47283201036c528cb93c360a7add
Signed-off-by: Wonnam Jang <wn.jang@samsung.com>
client/tts.c
common/tts_config_mgr.c [changed mode: 0755->0644]
common/tts_config_parser.c [changed mode: 0755->0644]
engine-parser/src/tts-engine-parser.c
server/ttsd_dbus.c

index 3ea3717..039512c 100644 (file)
@@ -273,12 +273,20 @@ int tts_destroy(tts_h tts)
 
        int ret = -1;
        int count = 0;
+       int screen_reader = -1;
 
        /* check state */
        switch (client->current_state) {
        case TTS_STATE_PAUSED:
        case TTS_STATE_PLAYING:
        case TTS_STATE_READY:
+               ret = vconf_get_bool(TTS_ACCESSIBILITY_KEY, &screen_reader);
+               if (0 != ret) {
+                       SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to get screen reader");
+               } else {
+                       SLOG(LOG_INFO, tts_tag(), "[INFO] Success to get screen reader(%d), g_screen_reader(%s), client->mode(%d)", screen_reader, (true == g_screen_reader) ? "True" : "False", client->mode);
+                       g_screen_reader = (bool)screen_reader;
+               }
                if (!(false == g_screen_reader && TTS_MODE_SCREEN_READER == client->mode)) {
                        while (0 != ret) {
                                ret = tts_dbus_request_finalize(client->uid);
@@ -670,6 +678,16 @@ int tts_unprepare(tts_h tts)
 
        int ret = -1;
        int count = 0;
+       int screen_reader = -1;
+
+       ret = vconf_get_bool(TTS_ACCESSIBILITY_KEY, &screen_reader);
+       if (0 != ret) {
+               SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to get screen reader");
+       } else {
+               SLOG(LOG_INFO, tts_tag(), "[INFO] Success to get screen reader(%d), g_screen_reader(%s), client->mode(%d)", screen_reader, (true == g_screen_reader) ? "True" : "False", client->mode);
+               g_screen_reader = (bool)screen_reader;
+       }
+
        if (!(false == g_screen_reader && TTS_MODE_SCREEN_READER == client->mode)) {
                while (0 != ret) {
                        ret = tts_dbus_request_finalize(client->uid);
old mode 100755 (executable)
new mode 100644 (file)
index 9faa9ed..e05446d
@@ -43,6 +43,9 @@ static GSList* g_engine_list = NULL;
 static GSList* g_config_client_list = NULL;
 
 static tts_config_s* g_config_info = NULL;
+extern char g_engine_id[128];
+extern char g_setting[128];
+extern char g_language[128];
 
 static Ecore_Fd_Handler* g_config_fd_handler_noti = NULL;
 static int g_config_fd_noti;
@@ -109,23 +112,14 @@ int __tts_config_mgr_check_engine_is_valid(const char* engine_id)
        }
 
        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);
+               memset(g_engine_id, '\0', sizeof(g_engine_id));
+               g_config_info->engine_id = g_engine_id;
+               strncpy(g_config_info->engine_id, engine_info->uuid, sizeof(g_engine_id) - 1);
        }
        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);
-       }
-
-       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;
+               memset(g_setting, '\0', sizeof(g_setting));
+               g_config_info->setting = g_setting;
+               strncpy(g_config_info->setting, engine_info->setting, sizeof(g_setting) - 1);
        }
 
        SLOG(LOG_DEBUG, tts_tag(), "Default engine is changed : %s", g_config_info->engine_id);
@@ -143,19 +137,16 @@ int __tts_config_mgr_check_engine_is_valid(const char* engine_id)
                voice = iter_voice->data;
 
                if (NULL != voice) {
-                       if (NULL != voice->language && NULL != g_config_info->language) {
+                       if (NULL != voice->language) {
                                if (0 == strcmp(voice->language, g_config_info->language)) {
                                        if (voice->type == g_config_info->type) {
                                                /* language is valid */
                                                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;
-                                               }
+                                               memset(g_language, '\0', sizeof(g_language));
+                                               g_config_info->language = g_language;
+                                               strncpy(g_config_info->language, voice->language, sizeof(g_language) - 1);
+
                                                g_config_info->type = voice->type;
 
                                                SLOG(LOG_DEBUG, tts_tag(), "Default voice is changed : lang(%s) type(%d)", voice->language, voice->type);
@@ -170,30 +161,24 @@ int __tts_config_mgr_check_engine_is_valid(const char* engine_id)
 
        if (false == is_valid_voice) {
                /* 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) {
-                               SLOG(LOG_ERROR, tts_tag(), "Fail to get voice list");
-                               return TTS_CONFIG_ERROR_OPERATION_FAILED;
-                       }
-                       voice = iter_voice->data;
+               memset(g_language, '\0', sizeof(g_language));
+               g_config_info->language = g_language;
 
-                       if (NULL == voice || NULL == voice->language) {
-                               SLOG(LOG_ERROR, tts_tag(), "Fail to get voice info from list");
-                               return TTS_CONFIG_ERROR_OPERATION_FAILED;
-                       }
+               iter_voice = g_slist_nth(engine_info->voices, 0);
+               if (NULL == iter_voice) {
+                       SLOG(LOG_ERROR, tts_tag(), "Fail to get voice list");
+                       return TTS_CONFIG_ERROR_OPERATION_FAILED;
+               }
+               voice = iter_voice->data;
 
-                       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);
+               if (NULL == voice || NULL == voice->language) {
+                       SLOG(LOG_ERROR, tts_tag(), "Fail to get voice info from list");
+                       return TTS_CONFIG_ERROR_OPERATION_FAILED;
                }
+               strncpy(g_config_info->language, voice->language, sizeof(g_language) - 1);
+
+               g_config_info->type = voice->type;
+               SLOG(LOG_DEBUG, tts_tag(), "Default voice is changed : lang(%s) type(%d)", voice->language, voice->type);
        }
 
        if (0 != tts_parser_set_engine(g_config_info->engine_id, g_config_info->setting, 
@@ -378,28 +363,14 @@ 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) {
-                                       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;
-                               }
+                               memset(g_engine_id, '\0', sizeof(g_engine_id));
+                               g_config_info->engine_id = g_engine_id;
+                               strncpy(g_config_info->engine_id, engine, sizeof(g_engine_id) - 1);
                        }
                        if (NULL != 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;
-                               }
+                               memset(g_setting, '\0', sizeof(g_setting));
+                               g_config_info->setting = g_setting;
+                               strncpy(g_config_info->setting, setting, sizeof(g_setting) - 1);
                        }
 
                        SECURE_SLOG(LOG_DEBUG, tts_tag(), "Engine change(%s)", g_config_info->engine_id);
@@ -435,15 +406,9 @@ 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) {
-                                       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");
-                               }
+                               memset(g_language, '\0', sizeof(g_language));
+                               g_config_info->language = g_language;
+                               strncpy(g_config_info->language, lang, sizeof(g_language) - 1);
                        }
                        if (-1 != voice_type) {
                                g_config_info->type = voice_type;
@@ -618,13 +583,9 @@ int __tts_config_set_auto_language()
                before_lang = strdup(g_config_info->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;
-               }
+               memset(g_language, '\0', sizeof(g_language));
+               g_config_info->language = g_language;
+               strncpy(g_config_info->language, temp_lang, sizeof(g_language) - 1);
 
                SECURE_SLOG(LOG_DEBUG, tts_tag(), "[Config] Default voice : lang(%s) type(%d)", 
                        g_config_info->language, g_config_info->type);
@@ -694,15 +655,10 @@ int __tts_config_set_auto_language()
                        iter = g_slist_next(iter);
                }
 
-               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;
-                       }
-               }
+
+               memset(g_language, '\0', sizeof(g_language));
+               g_config_info->language = g_language;
+               strncpy(g_config_info->language, tmp_language, sizeof(g_language) - 1);
 
                g_config_info->type = tmp_type;
 
@@ -1196,15 +1152,9 @@ 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;
-                                       }
-                               }
+                               memset(g_language, '\0', sizeof(g_language));
+                               g_config_info->language = g_language;
+                               strncpy(g_config_info->language, tmp_language, sizeof(g_language) - 1);
 
                                g_config_info->type = tmp_type;
 
@@ -1532,10 +1482,8 @@ int tts_config_mgr_set_engine(const char* engine)
                return TTS_CONFIG_ERROR_INVALID_PARAMETER;
 
        /* Check current engine id with new engine id */
-       if (NULL != g_config_info->engine_id) {
-               if (0 == strcmp(g_config_info->engine_id, engine))
-                       return 0;
-       }
+       if (0 == strcmp(g_config_info->engine_id, engine))
+               return 0;
 
        if (0 >= g_slist_length(g_engine_list)) {
                SLOG(LOG_ERROR, tts_tag(), "[ERROR] There is no engine!!");
@@ -1572,19 +1520,14 @@ int tts_config_mgr_set_engine(const char* engine)
                        continue;
                }
 
-               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);
+               memset(g_engine_id, '\0', sizeof(g_engine_id));
+               g_config_info->engine_id = g_engine_id;
+               strncpy(g_config_info->engine_id, engine, sizeof(g_engine_id) - 1);
 
                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);
+                       memset(g_setting, '\0', sizeof(g_setting));
+                       g_config_info->setting = g_setting;
+                       strncpy(g_config_info->setting, engine_info->setting, sizeof(g_setting) - 1);
                }
 
                /* Engine is valid*/
@@ -1619,18 +1562,17 @@ 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) {
-                                       voice = iter_voice->data;
-                                       if (NULL != voice) {
-                                               if (NULL != voice->language)
-                                                       g_config_info->language = strdup(voice->language);
-                                               g_config_info->type = voice->type;
-                                       }
+                       memset(g_language, '\0', sizeof(g_language));
+                       g_config_info->language = g_language;
+
+                       iter_voice = g_slist_nth(engine_info->voices, 0);
+                       if (NULL != iter_voice) {
+                               voice = iter_voice->data;
+                               if (NULL != voice) {
+                                       if (NULL != voice->language)
+                                               strncpy(g_config_info->language, voice->language, sizeof(g_language) - 1);
+
+                                       g_config_info->type = voice->type;
                                }
                        }
                }
@@ -1730,7 +1672,7 @@ int tts_config_mgr_get_voice(char** language, int* type)
        if (NULL == language || NULL == type)
                return TTS_CONFIG_ERROR_INVALID_PARAMETER;
 
-       if (NULL != g_config_info->language) {
+       if (0 != strlen(g_config_info->language)) {
                *language = strdup(g_config_info->language);
                *type = g_config_info->type;
        } else {
@@ -1759,24 +1701,15 @@ int tts_config_mgr_set_voice(const char* language, int type)
        }
 
        /* Check language is valid */
-       if (NULL != g_config_info->language) {
-               if (0 != tts_parser_set_voice(language, type)) {
-                       SLOG(LOG_ERROR, tts_tag(), "Fail to save default voice");
-                       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 {
-               SLOG(LOG_ERROR, tts_tag(), "language is NULL");
+       if (0 != tts_parser_set_voice(language, type)) {
+               SLOG(LOG_ERROR, tts_tag(), "Fail to save default voice");
                return TTS_CONFIG_ERROR_OPERATION_FAILED;
        }
+       memset(g_language, '\0', sizeof(g_language));
+       g_config_info->language = g_language;
+       strncpy(g_config_info->language, language, sizeof(g_language) - 1);
+
+       g_config_info->type = type;
 
        return 0;
 }
@@ -1995,7 +1928,7 @@ bool tts_config_check_default_voice_is_valid(const char* language, int type)
        if (NULL == language)
                return false;
 
-       if (NULL == g_config_info->engine_id) {
+       if (0 == strlen(g_config_info->engine_id)) {
                SLOG(LOG_ERROR, tts_tag(), "[ERROR] Default engine id is NULL");
                return false;
        }
old mode 100755 (executable)
new mode 100644 (file)
index 82f8428..b984103
@@ -46,6 +46,9 @@
 extern char* tts_tag();
 
 static xmlDocPtr g_config_doc = NULL;
+char g_engine_id[128] = {0,};
+char g_setting[128] = {0,};
+char g_language[128] = {0,};
 
 int tts_parser_get_engine_info(const char* path, tts_engine_info_s** engine_info)
 {
@@ -392,19 +395,19 @@ int tts_parser_load_config(tts_config_s** config_info)
                return -1;
        }
 
-       temp->engine_id = NULL;
-       temp->setting = NULL;
-       temp->language = NULL;
+       memset(g_engine_id, '\0', sizeof(g_engine_id));
+       memset(g_setting, '\0', sizeof(g_setting));
+       memset(g_language, '\0', sizeof(g_language));
+
+       temp->engine_id = g_engine_id;
+       temp->setting = g_setting;
+       temp->language = g_language;
 
        while (cur != NULL) {
                if (0 == xmlStrcmp(cur->name, (const xmlChar *)TTS_TAG_CONFIG_ENGINE_ID)) {
                        key = xmlNodeGetContent(cur);
                        if (NULL != key) {
-                               if (NULL != temp->engine_id) {
-                                       free(temp->engine_id);
-                                       temp->engine_id = NULL;
-                               }
-                               temp->engine_id = strdup((char*)key);
+                               strncpy(temp->engine_id, (char*)key, sizeof(g_engine_id) - 1);
                                xmlFree(key);
                                key = NULL;
                        } else {
@@ -413,11 +416,7 @@ int tts_parser_load_config(tts_config_s** config_info)
                } else if (0 == xmlStrcmp(cur->name, (const xmlChar *)TTS_TAG_CONFIG_ENGINE_SETTING)) {
                        key = xmlNodeGetContent(cur);
                        if (NULL != key) {
-                               if (NULL != temp->setting) {
-                                       free(temp->setting);
-                                       temp->setting = NULL;
-                               }
-                               temp->setting = strdup((char*)key);
+                               strncpy(temp->setting, (char*)key, sizeof(g_setting) - 1);
                                xmlFree(key);
                                key = NULL;
                        } else {
@@ -462,11 +461,7 @@ int tts_parser_load_config(tts_config_s** config_info)
                } else if (0 == xmlStrcmp(cur->name, (const xmlChar *)TTS_TAG_CONFIG_LANGUAGE)) {
                        key = xmlNodeGetContent(cur);
                        if (NULL != key) {
-                               if (NULL != temp->language) {
-                                       free(temp->language);
-                                       temp->language = NULL;
-                               }
-                               temp->language = strdup((char*)key);
+                               strncpy(temp->language, (char*)key, sizeof(g_language) - 1);
                                xmlFree(key);
                                key = NULL;
                        } else {
@@ -528,18 +523,6 @@ int tts_parser_unload_config(tts_config_s* config_info)
                g_config_doc = NULL;
        }
        if (NULL != config_info) {
-               if (NULL != config_info->engine_id)     {
-                       free(config_info->engine_id);
-                       config_info->engine_id = NULL;
-               }
-               if (NULL != config_info->setting) {
-                       free(config_info->setting);
-                       config_info->setting = NULL;
-               }
-               if (NULL != config_info->language) {
-                       free(config_info->language);
-                       config_info->language = NULL;
-               }
                free(config_info);
                config_info = NULL;
        }
index b5d82d2..deafadc 100644 (file)
@@ -156,8 +156,10 @@ static int __save_engine_info_xml(const char *pkgid, gchar *ut, uid_t uid, gid_t
 
 
        /* Make directories */
+       int fd = -1;
 //     if (0 != access(dir_config_base, F_OK)) {
-       if (-1 == open(dir_config_base, O_DIRECTORY)) {
+       fd = open(dir_config_base, O_DIRECTORY);
+       if (-1 == fd) {
                LOGE("[INFO] No directory : %s, errno : %d", dir_config_base, errno);
                if (0 != mkdir(dir_config_base, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) {
                        LOGE("[ERROR] Fail to make directory : %s, errno : %d", dir_config_base, errno);
@@ -174,10 +176,13 @@ static int __save_engine_info_xml(const char *pkgid, gchar *ut, uid_t uid, gid_t
                                LOGD("[DEBUG] Success to change user and group");
                        }
                }
+       } else {
+               close(fd);
        }
 
 //     if (0 != access(dir_home, F_OK)) {
-       if (-1 == open(dir_home, O_DIRECTORY)) {
+       fd = open(dir_home, O_DIRECTORY);
+       if (-1 == fd) {
                LOGE("[INFO] No directory : %s, errno : %d", dir_home, errno);
                if (0 != mkdir(dir_home, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) {
                        LOGE("[ERROR] Fail to make directory : %s, errno : %d", dir_home, errno);
@@ -194,10 +199,13 @@ static int __save_engine_info_xml(const char *pkgid, gchar *ut, uid_t uid, gid_t
                                LOGD("[DEBUG] Success to change user and group");
                        }
                }
+       } else {
+               close(fd);
        }
 
 //     if (0 != access(dir_engine_base, F_OK)) {
-       if (-1 == open(dir_engine_base, O_DIRECTORY)) {
+       fd = open(dir_engine_base, O_DIRECTORY);
+       if (-1 == fd) {
                LOGE("[INFO] No directory : %s, errno : %d", dir_engine_base, errno);
                if (0 != mkdir(dir_engine_base, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) {
                        LOGE("[ERROR] Fail to make directory : %s, errno : %d", dir_engine_base, errno);
@@ -214,10 +222,13 @@ static int __save_engine_info_xml(const char *pkgid, gchar *ut, uid_t uid, gid_t
                                LOGD("[DEBUG] Success to change user and group");
                        }
                }
+       } else {
+               close(fd);
        }
 
 //     if (0 != access(dir_engine_info, F_OK)) {
-       if (-1 == open(dir_engine_info, O_DIRECTORY)) {
+       fd = open(dir_engine_info, O_DIRECTORY);
+       if (-1 == fd) {
                LOGE("[INFO] No directory : %s, errno : %d", dir_engine_info, errno);
                if (0 != mkdir(dir_engine_info, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) {
                        LOGE("[ERROR] Fail to make directory : %s, errno : %d", dir_engine_info, errno);
@@ -234,6 +245,8 @@ static int __save_engine_info_xml(const char *pkgid, gchar *ut, uid_t uid, gid_t
                                LOGD("[DEBUG] Success to change user and group");
                        }
                }
+       } else {
+               close(fd);
        }
 
 
@@ -311,6 +324,10 @@ static void __insert_language_from_metadata(xmlNodePtr root, const char *languag
        char* voice = NULL;
        char* lang = NULL;
        char* type = NULL;
+       if (NULL == root || NULL == language) {
+               LOGE("Invalid parameter, root(%p), language(%s)", root, language);
+               return;
+       }
 
        char *tmp_lang = NULL;
        char *tmp_free = NULL;
@@ -339,7 +356,6 @@ static void __insert_language_from_metadata(xmlNodePtr root, const char *languag
        }
        xmlAddChild(root, voices_node);
 
-       FREE(tmp_lang)
        FREE(tmp_free)
 }
 
@@ -533,7 +549,7 @@ int PKGMGR_MDPARSER_PLUGIN_INSTALL(const char *pkgid, const char *appid, GList *
                while (iter != NULL) {
                        user = (GumUser*) iter->data;
                        g_object_get(G_OBJECT(user), "uid", &uid, NULL);
-                       FREE(home_dir)
+                       G_FREE(home_dir)
 
                        g_object_get(G_OBJECT(user), "gid", &gid, NULL);
                        g_object_get(G_OBJECT(user), "homedir", &home_dir, NULL);
@@ -584,7 +600,7 @@ int PKGMGR_MDPARSER_PLUGIN_INSTALL(const char *pkgid, const char *appid, GList *
                                FREE(g_dir_engine_info)
 
                                G_FREE(user_type)
-                               FREE(home_dir)
+                               G_FREE(home_dir)
 
                                iter = g_list_next(iter);
                        } else {
@@ -781,12 +797,13 @@ int PKGMGR_MDPARSER_PLUGIN_UNINSTALL(const char *pkgid, const char *appid, GList
                while (iter != NULL) {
                        user = (GumUser*) iter->data;
                        g_object_get(G_OBJECT(user), "uid", &uid, NULL);
-                       FREE(home_dir)
+                       G_FREE(home_dir)
                        g_object_get(G_OBJECT(user), "homedir", &home_dir, NULL);
                        g_object_get(G_OBJECT(user), "usertype", &gumut, NULL);
                        user_type = g_strdup(gum_user_type_to_string(gumut));
                        if (NULL == user_type) {
                                gum_user_service_list_free(users);
+                               G_FREE(home_dir)
                                g_object_unref(gus);
                                gus = NULL;
                                return -1;
@@ -796,6 +813,7 @@ int PKGMGR_MDPARSER_PLUGIN_UNINSTALL(const char *pkgid, const char *appid, GList
                                g_dir_engine_info = (char*)calloc(strlen(home_dir) + 34, sizeof(char));
                                if (NULL == g_dir_engine_info) {
                                        gum_user_service_list_free(users);
+                                       G_FREE(home_dir)
                                        g_object_unref(gus);
                                        gus = NULL;
                                        G_FREE(user_type)
@@ -815,16 +833,14 @@ int PKGMGR_MDPARSER_PLUGIN_UNINSTALL(const char *pkgid, const char *appid, GList
                                        LOGE("[ERROR] Fail to remove engine info file");
                                }
 
-                               FREE(home_dir)
+                               G_FREE(home_dir)
                                FREE(g_dir_engine_info)
-                               G_FREE(user_type)
-
-                               LOGD("Finish release memory");
-                               iter = g_list_next(iter);
-                               LOGD("Finish next iter");
-                       } else {
-                               iter = g_list_next(iter);
                        }
+                       G_FREE(user_type)
+
+                       LOGD("Finish release memory");
+                       iter = g_list_next(iter);
+                       LOGD("Finish next iter");
                }
 
                gum_user_service_list_free(users);
index 5342bd3..d8c9290 100644 (file)
@@ -354,6 +354,13 @@ int ttsd_dbus_open_connection()
                g_service_object = (char*)calloc(strlen(TTS_SR_SERVER_SERVICE_OBJECT_PATH) + 1, sizeof(char));
                g_service_interface = (char*)calloc(strlen(TTS_SR_SERVER_SERVICE_INTERFACE) + 1, sizeof(char));
 
+               if (NULL == g_service_name || NULL == g_service_object || NULL == g_service_interface) {
+                       SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to allocate memory");
+                       __ttsd_dbus_service_free();
+                       __ttsd_dbus_connection_free();
+                       return -1;
+               }
+
                snprintf(g_service_name, strlen(TTS_SR_SERVER_SERVICE_NAME) + 1, "%s", TTS_SR_SERVER_SERVICE_NAME);
                snprintf(g_service_object, strlen(TTS_SR_SERVER_SERVICE_OBJECT_PATH) + 1, "%s", TTS_SR_SERVER_SERVICE_OBJECT_PATH);
                snprintf(g_service_interface, strlen(TTS_SR_SERVER_SERVICE_INTERFACE) + 1, "%s", TTS_SR_SERVER_SERVICE_INTERFACE);
@@ -362,6 +369,13 @@ int ttsd_dbus_open_connection()
                g_service_object = (char*)calloc(strlen(TTS_NOTI_SERVER_SERVICE_OBJECT_PATH) + 1, sizeof(char));
                g_service_interface = (char*)calloc(strlen(TTS_NOTI_SERVER_SERVICE_INTERFACE) + 1, sizeof(char));
 
+               if (NULL == g_service_name || NULL == g_service_object || NULL == g_service_interface) {
+                       SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to allocate memory");
+                       __ttsd_dbus_service_free();
+                       __ttsd_dbus_connection_free();
+                       return -1;
+               }
+
                snprintf(g_service_name, strlen(TTS_NOTI_SERVER_SERVICE_NAME) + 1, "%s", TTS_NOTI_SERVER_SERVICE_NAME);
                snprintf(g_service_object, strlen(TTS_NOTI_SERVER_SERVICE_OBJECT_PATH) + 1, "%s", TTS_NOTI_SERVER_SERVICE_OBJECT_PATH);
                snprintf(g_service_interface, strlen(TTS_NOTI_SERVER_SERVICE_INTERFACE) + 1, "%s", TTS_NOTI_SERVER_SERVICE_INTERFACE);
@@ -370,18 +384,18 @@ int ttsd_dbus_open_connection()
                g_service_object = (char*)calloc(strlen(TTS_SERVER_SERVICE_OBJECT_PATH) + 1, sizeof(char));
                g_service_interface = (char*)calloc(strlen(TTS_SERVER_SERVICE_INTERFACE) + 1, sizeof(char));
 
+               if (NULL == g_service_name || NULL == g_service_object || NULL == g_service_interface) {
+                       SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to allocate memory");
+                       __ttsd_dbus_service_free();
+                       __ttsd_dbus_connection_free();
+                       return -1;
+               }
+
                snprintf(g_service_name, strlen(TTS_SERVER_SERVICE_NAME) + 1, "%s", TTS_SERVER_SERVICE_NAME);
                snprintf(g_service_object, strlen(TTS_SERVER_SERVICE_OBJECT_PATH) + 1, "%s", TTS_SERVER_SERVICE_OBJECT_PATH);
                snprintf(g_service_interface, strlen(TTS_SERVER_SERVICE_INTERFACE) + 1, "%s", TTS_SERVER_SERVICE_INTERFACE);
        }
 
-       if (NULL == g_service_name || NULL == g_service_object || NULL == g_service_interface) {
-               SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to allocate memory");
-               __ttsd_dbus_service_free();
-               __ttsd_dbus_connection_free();
-               return -1;
-       }
-
        /* request our name on the bus and check for errors */
        ret = dbus_bus_request_name(g_conn_listener, g_service_name, DBUS_NAME_FLAG_REPLACE_EXISTING, &err);
        if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) {