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;
}
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);
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);
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,
/* 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);
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;
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);
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;
}
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;
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!!");
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*/
}
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;
}
}
}
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 {
}
/* 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;
}
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;
}
/* 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);
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);
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);
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);
LOGD("[DEBUG] Success to change user and group");
}
}
+ } else {
+ close(fd);
}
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;
}
xmlAddChild(root, voices_node);
- FREE(tmp_lang)
FREE(tmp_free)
}
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);
FREE(g_dir_engine_info)
G_FREE(user_type)
- FREE(home_dir)
+ G_FREE(home_dir)
iter = g_list_next(iter);
} else {
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;
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)
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);
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);
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);
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) {