Fix the prevent issue
authorLee Dongyeol <dy3.lee@samsung.com>
Tue, 4 Dec 2012 08:39:57 +0000 (17:39 +0900)
committerLee Dongyeol <dy3.lee@samsung.com>
Tue, 4 Dec 2012 08:39:57 +0000 (17:39 +0900)
client/tts_client.c
debian/changelog
server/ttsd_config.c
server/ttsd_dbus.c
server/ttsd_dbus_server.c
server/ttsd_engine_agent.c
server/ttsd_player.cpp
server/ttsd_server.cpp

index 7179b2a..88e831f 100644 (file)
@@ -39,7 +39,7 @@ int tts_client_new(tts_h* tts)
        tts_client_s* client = NULL;
        client = (tts_client_s*)g_malloc0 (sizeof(tts_client_s));
 
-       tts_h temp = (tts_h)g_malloc0(sizeof(tts_h));
+       tts_h temp = (tts_h)g_malloc0(sizeof(struct tts_s));
        temp->handle = __client_generate_uid(getpid()); 
 
        /* initialize client data */
index 807ad68..9444ef1 100644 (file)
@@ -1,3 +1,10 @@
+tts (0.1.1-40slp2+1) unstable; urgency=low
+
+  * Fix prevent
+  * Git: framework/uifw/voice/tts
+
+ -- Dongyeol Lee <dy3.lee@samsung.com>  Tue, 04 Dec 2012 16:40:08 +0900
+
 tts (0.1.1-39slp2+1) unstable; urgency=low
 
   * Remove dependency of openssl
index 0ca99ce..c30cc27 100644 (file)
@@ -87,39 +87,59 @@ int __ttsd_config_load()
        }
 
        /* Read engine id */
-       fscanf(config_fp, "%s %s", buf_id, buf_param);
-       if (0 == strncmp(ENGINE_ID, buf_id, strlen(ENGINE_ID))) {
-               g_engine_id = strdup(buf_param);
-       } else {
+       if (EOF == fscanf(config_fp, "%s %s", buf_id, buf_param)) {
                fclose(config_fp);
-               SLOG(LOG_WARN, TAG_TTSD, "[Config WARNING] Fail to load config (engine id)");
+               SLOG(LOG_WARN, TAG_TTSD, "[Config WARNING] Fail to read config (engine id)");
                __ttsd_config_save();
                return -1;
+       } else {
+               if (0 == strncmp(ENGINE_ID, buf_id, strlen(ENGINE_ID))) {
+                       g_engine_id = strdup(buf_param);
+               } else {
+                       fclose(config_fp);
+                       SLOG(LOG_WARN, TAG_TTSD, "[Config WARNING] Fail to load config (engine id)");
+                       __ttsd_config_save();
+                       return -1;
+               }
        }
 
+       
+
        /* Read voice */
-       fscanf(config_fp, "%s %s %d", buf_id, buf_param, &int_param);
-       if (0 == strncmp(VOICE, buf_id, strlen(VOICE))) {
-               g_language = strdup(buf_param);
-               g_vc_type = int_param;
-       } else {
+       if (EOF == fscanf(config_fp, "%s %s %d", buf_id, buf_param, &int_param)) {
                fclose(config_fp);
-               SLOG(LOG_WARN, TAG_TTSD, "[Config WARNING] Fail to load config (voice)");
+               SLOG(LOG_WARN, TAG_TTSD, "[Config WARNING] Fail to read config (voice)");
                __ttsd_config_save();
                return -1;
+       } else {
+               if (0 == strncmp(VOICE, buf_id, strlen(VOICE))) {
+                       g_language = strdup(buf_param);
+                       g_vc_type = int_param;
+               } else {
+                       fclose(config_fp);
+                       SLOG(LOG_WARN, TAG_TTSD, "[Config WARNING] Fail to load config (voice)");
+                       __ttsd_config_save();
+                       return -1;
+               }
        }
-
+       
        /* Read speed */
-       fscanf(config_fp, "%s %d", buf_id, &int_param);
-       if (0 == strncmp(SPEED, buf_id, strlen(SPEED))) {
-               g_speed = int_param;
-       } else {
+       if (EOF == fscanf(config_fp, "%s %d", buf_id, &int_param)) {
                fclose(config_fp);
-               SLOG(LOG_WARN, TAG_TTSD, "[Config WARNING] Fail to load config (speed)");
+               SLOG(LOG_WARN, TAG_TTSD, "[Config WARNING] Fail to read config (speed)");
                __ttsd_config_save();
                return -1;
+       } else {
+               if (0 == strncmp(SPEED, buf_id, strlen(SPEED))) {
+                       g_speed = int_param;
+               } else {
+                       fclose(config_fp);
+                       SLOG(LOG_WARN, TAG_TTSD, "[Config WARNING] Fail to load config (speed)");
+                       __ttsd_config_save();
+                       return -1;
+               }
        }
-
+       
        fclose(config_fp);
 
        SLOG(LOG_DEBUG, TAG_TTSD, "[Config] Load config : engine(%s), voice(%s,%d), speed(%d)",
index 199fa0c..89dde48 100644 (file)
@@ -186,7 +186,7 @@ static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handle
        msg = dbus_connection_pop_message(conn);
 
        /* loop again if we haven't read a message */
-       if (NULL == msg) { 
+       if (NULL == msg || NULL == conn) { 
                return ECORE_CALLBACK_RENEW;
        }
        
index 5a632a6..0e2f32e 100644 (file)
@@ -199,14 +199,16 @@ int ttsd_dbus_server_get_support_voices(DBusConnection* conn, DBusMessage* msg)
                                while (NULL != iter) {
                                        voice = iter->data;
 
-                                       dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(voice->language) );
-                                       dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(voice->type) );
+                                       if (NULL != voice) {
+                                               dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(voice->language) );
+                                               dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(voice->type) );
 
-                                       if (NULL != voice->language)
-                                               g_free(voice->language);
-                                       if (NULL != voice);
+                                               if (NULL != voice->language)
+                                                       g_free(voice->language);
+                                               
                                                g_free(voice);
-
+                                       }
+                                       
                                        voice_list = g_list_remove_link(voice_list, iter);
 
                                        iter = g_list_first(voice_list);
@@ -655,22 +657,25 @@ int ttsd_dbus_server_setting_get_engine_list(DBusConnection* conn, DBusMessage*
 
                                while (NULL != iter) {
                                        engine = iter->data;
-                                       SLOG(LOG_DEBUG, TAG_TTSD, "engine id : %s, engine name : %s, ug_name, : %s", 
-                                               engine->engine_id, engine->engine_name, engine->ug_name);
-
-                                       dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->engine_id) );
-                                       dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->engine_name) );
-                                       dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->ug_name) );
-
-                                       if (NULL != engine->engine_id)
-                                               g_free(engine->engine_id);
-                                       if (NULL != engine->engine_name);
-                                               g_free(engine->engine_name);
-                                       if (NULL != engine->ug_name);
-                                               g_free(engine->ug_name);
-                                       if (NULL != engine);
+                                       
+                                       if (NULL != engine) {
+                                               SLOG(LOG_DEBUG, TAG_TTSD, "engine id : %s, engine name : %s, ug_name, : %s", 
+                                                       engine->engine_id, engine->engine_name, engine->ug_name);
+
+                                               dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->engine_id) );
+                                               dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->engine_name) );
+                                               dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(engine->ug_name) );
+
+                                               if (NULL != engine->engine_id)
+                                                       g_free(engine->engine_id);
+                                               if (NULL != engine->engine_name)
+                                                       g_free(engine->engine_name);
+                                               if (NULL != engine->ug_name)
+                                                       g_free(engine->ug_name);
+                                               
                                                g_free(engine);
-
+                                       }
+                                       
                                        engine_list = g_list_remove_link(engine_list, iter);
 
                                        iter = g_list_first(engine_list);
@@ -858,13 +863,15 @@ int ttsd_dbus_server_setting_get_voice_list(DBusConnection* conn, DBusMessage* m
                                        while (NULL != iter) {
                                                voice = iter->data;
 
-                                               dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(voice->language) );
-                                               dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(voice->type) );
+                                               if (NULL != voice) {
+                                                       dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(voice->language) );
+                                                       dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(voice->type) );
+
+                                                       if (NULL != voice->language)
+                                                               g_free(voice->language);
 
-                                               if (NULL != voice->language)
-                                                       g_free(voice->language);
-                                               if (NULL != voice);
                                                        g_free(voice);
+                                               }
 
                                                voice_list = g_list_remove_link(voice_list, iter);
 
@@ -1168,16 +1175,18 @@ int ttsd_dbus_server_setting_get_engine_setting(DBusConnection* conn, DBusMessag
                                        while (NULL != iter) {
                                                setting = iter->data;
 
-                                               dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(setting->key) );
-                                               dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(setting->value) );
+                                               if (NULL != setting) {
+                                                       dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(setting->key) );
+                                                       dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &(setting->value) );
 
-                                               if (NULL != setting->key)
-                                                       g_free(setting->key);
-                                               if (NULL != setting->value)
-                                                       g_free(setting->value);
-                                               if (NULL != setting);
+                                                       if (NULL != setting->key)
+                                                               g_free(setting->key);
+                                                       if (NULL != setting->value)
+                                                               g_free(setting->value);
+                                                       
                                                        g_free(setting);
-
+                                               }
+                                               
                                                engine_setting_list = g_list_remove_link(engine_setting_list, iter);
 
                                                iter = g_list_first(engine_setting_list);
index 06bb623..64867d5 100644 (file)
@@ -350,8 +350,8 @@ int __internal_get_engine_info(const char* filepath, ttsengine_info_s** info)
        int (*get_engine_info)(ttsp_engine_info_cb callback, void* user_data);
 
        get_engine_info = (int (*)(ttsp_engine_info_cb, void*))dlsym(handle, "ttsp_get_engine_info");
-       if ((error = dlerror()) != NULL) {
-               SLOG(LOG_WARN, TAG_TTSD, "[Engine Agent] ttsp_get_engine_info() link error\n");
+       if (NULL != (error = dlerror()) || NULL == get_engine_info) {
+               SLOG(LOG_WARN, TAG_TTSD, "[Engine Agent] ttsp_get_engine_info() link error");
                dlclose(handle);
                return TTSD_ERROR_OPERATION_FAILED;
        }
@@ -361,7 +361,7 @@ int __internal_get_engine_info(const char* filepath, ttsengine_info_s** info)
 
        /* get engine info */
        if (0 != get_engine_info(&__engine_info_cb, (void*)temp)) {
-               SLOG(LOG_ERROR, TAG_TTSD, "[Engine Agent ERROR] fail to get engine info\n");
+               SLOG(LOG_ERROR, TAG_TTSD, "[Engine Agent ERROR] fail to get engine info");
                dlclose(handle);
                g_free(temp);
                return TTSD_ERROR_OPERATION_FAILED;
@@ -373,11 +373,11 @@ int __internal_get_engine_info(const char* filepath, ttsengine_info_s** info)
        temp->engine_path = g_strdup(filepath);
        
        SLOG(LOG_DEBUG, TAG_TTSD, "----- Valid engine");
-       SLOG(LOG_DEBUG, TAG_TTSD, "Engine uuid : %s\n", temp->engine_uuid);
-       SLOG(LOG_DEBUG, TAG_TTSD, "Engine name : %s\n", temp->engine_name);
-       SLOG(LOG_DEBUG, TAG_TTSD, "Setting ug path : %s\n", temp->setting_ug_path);
-       SLOG(LOG_DEBUG, TAG_TTSD, "Engine path : %s\n", temp->engine_path);
-       SLOG(LOG_DEBUG, TAG_TTSD, "Use network : %s\n", temp->use_network ? "true":"false");
+       SLOG(LOG_DEBUG, TAG_TTSD, "Engine uuid : %s", temp->engine_uuid);
+       SLOG(LOG_DEBUG, TAG_TTSD, "Engine name : %s", temp->engine_name);
+       SLOG(LOG_DEBUG, TAG_TTSD, "Setting ug path : %s", temp->setting_ug_path);
+       SLOG(LOG_DEBUG, TAG_TTSD, "Engine path : %s", temp->engine_path);
+       SLOG(LOG_DEBUG, TAG_TTSD, "Use network : %s", temp->use_network ? "true":"false");
        SLOG(LOG_DEBUG, TAG_TTSD, "-----");
        SLOG(LOG_DEBUG, TAG_TTSD, "  ");
 
@@ -454,9 +454,9 @@ int __internal_update_engine_list()
                        filepath = (char*)g_malloc0( sizeof(char) * file_size);
 
                        if (NULL != filepath) { 
-                               strncpy(filepath, ENGINE_DIRECTORY_DOWNLOAD, strlen(ENGINE_DIRECTORY_DOWNLOAD) );
-                               strncat(filepath, "/", strlen("/") );
-                               strncat(filepath, dirp->d_name, strlen(dirp->d_name) );
+                               strcpy(filepath, ENGINE_DIRECTORY_DOWNLOAD);
+                               strcat(filepath, "/");
+                               strcat(filepath, dirp->d_name);
                        } else {
                                SLOG(LOG_ERROR, TAG_TTSD, "[Engine Agent ERROR] Not enough memory!! \n" );
                                continue;       
@@ -588,7 +588,7 @@ int ttsd_engine_agent_load_current_engine()
        }
 
        g_cur_engine.ttsp_load_engine = (int (*)(const ttspd_funcs_s* , ttspe_funcs_s*) )dlsym(g_cur_engine.handle, "ttsp_load_engine");
-       if ((error = dlerror()) != NULL) {
+       if (NULL != (error = dlerror()) || NULL == g_cur_engine.ttsp_load_engine) {
                SLOG(LOG_ERROR, TAG_TTSD, "[Engine Agent ERROR] fail to link daemon to ttsp_load_engine() of current engine \n");
                return -3;
        }
@@ -1503,11 +1503,13 @@ void __free_voice_list(GList* voice_list)
                while (NULL != iter) {
                        data = iter->data;
                        
-                       if (NULL != data->language)
-                               g_free(data->language);
-                       if (NULL != data);
-                               g_free(data);
+                       if (NULL != data) {
+                               if (NULL != data->language)
+                                       g_free(data->language);
 
+                               g_free(data);
+                       }
+                       
                        voice_list = g_list_remove_link(voice_list, iter);
                        
                        iter = g_list_first(voice_list);
index 20ebb27..9410f6f 100644 (file)
@@ -229,15 +229,15 @@ int ttsd_player_destroy_instance(int uid)
                        /* Get handle data from list */
                        data = (player_s*)iter->data;
 
-                       /* compare uid */
-                       if (uid == data->uid) {
-                               g_player_list = g_list_remove_link(g_player_list, iter);                                
-                               if (NULL != data) {
+                       if (NULL != data) {
+                               /* compare uid */
+                               if (uid == data->uid) {
+                                       g_player_list = g_list_remove_link(g_player_list, iter);                                
                                        g_free(data);
+                                       break;
                                }
-                               break;
-                       }       
-
+                       }
+                               
                        /* Get next item */
                        iter = g_list_next(iter);
                }
@@ -627,14 +627,20 @@ static Eina_Bool __player_next_play(void *data)
 
        int* uid = (int*)data;
 
+       if (NULL == uid) {
+               SLOG(LOG_ERROR, TAG_TTSD, "[PLAYER ERROR] uid is NULL");
+               SLOG(LOG_DEBUG, TAG_TTSD, "=====");
+               SLOG(LOG_DEBUG, TAG_TTSD, "  ");
+               return EINA_FALSE;
+       }
+
        SLOG(LOG_DEBUG, TAG_TTSD, "[PLAYER] uid = %d", *uid);
        
        if (0 != ttsd_player_next_play(*uid)) {
                SLOG(LOG_WARN, TAG_TTSD, "[PLAYER WARNING] Fail to play next");
        }
 
-       if (NULL != uid)
-               free(uid);
+       free(uid);
 
        SLOG(LOG_DEBUG, TAG_TTSD, "=====");
        SLOG(LOG_DEBUG, TAG_TTSD, "  ");
@@ -718,7 +724,12 @@ static int msg_callback(int message, void *data, void *user_param)
                        g_playing_info = current;
 
                        app_state_e state;
-                       ttsd_data_get_client_state(uid, &state);
+                       if (0 != ttsd_data_get_client_state(uid, &state)) {
+                               SLOG(LOG_ERROR, TAG_TTSD, "[PLAYER ERROR] uid is not valid : %d", uid);
+                               SLOG(LOG_DEBUG, TAG_TTSD, "=====");
+                               SLOG(LOG_DEBUG, TAG_TTSD, "  ");
+                               break;
+                       }
 
                        /* for sync problem */
                        if (APP_STATE_PAUSED == state) {
@@ -746,6 +757,10 @@ static int msg_callback(int message, void *data, void *user_param)
        case MM_MESSAGE_END_OF_STREAM:
                {
                        SLOG(LOG_DEBUG, TAG_TTSD, "===== END OF STREAM CALLBACK");
+
+                       if (NULL == user_data) 
+                               break;
+
                        remove(user_data->filename);
 
                        /* Check uid */
@@ -764,8 +779,7 @@ static int msg_callback(int message, void *data, void *user_param)
                                return -1;
                        }
 
-                       if (NULL != user_data) 
-                               g_free(user_data);
+                       g_free(user_data);
 
                        int pid = ttsd_data_get_pid(uid);
 
@@ -843,18 +857,18 @@ player_s* __player_get_item(int uid)
 int __save_file(const int uid, const int index, const sound_data_s data, char** filename)
 {
        char postfix[5];
-       memset(postfix, 0, 5);
+       memset(postfix, '\0', 5);
 
        switch (data.audio_type) {
        case TTSP_AUDIO_TYPE_RAW:
        case TTSP_AUDIO_TYPE_WAV:
-               strncpy(postfix, "wav", strlen("wav"));
+               strcpy(postfix, "wav");
                break;
        case TTSP_AUDIO_TYPE_MP3:
-               strncpy(postfix, "mp3", strlen("mp3"));
+               strcpy(postfix, "mp3");
                break;
        case TTSP_AUDIO_TYPE_AMR:
-               strncpy(postfix, "amr", strlen("amr"));
+               strcpy(postfix, "amr");
                break;
        default:
                SLOG(LOG_ERROR, TAG_TTSD, "[Player ERROR] Audio type(%d) is NOT valid", data.audio_type); 
@@ -866,7 +880,7 @@ int __save_file(const int uid, const int index, const sound_data_s data, char**
        temp = *filename;
 
        snprintf(temp, FILE_PATH_SIZE, "%s/ttstemp%d_%d.%s", TEMP_FILE_PATH, uid, index, postfix );
-       
+
        FILE* fp;
        fp = fopen(temp, "wb");
 
@@ -941,7 +955,7 @@ int __set_and_start(player_s* player)
        }
 
        g_index++;
-       if (65534 <= g_index)   {
+       if (10000 <= g_index)   {
                g_index = 1;
        }
 
index 3bf737d..706bcf8 100644 (file)
@@ -294,9 +294,6 @@ int __synthesis_result_callback(ttsp_result_event_e event, const void* data, uns
        utterance_t* utt_get_param;
        utt_get_param = (utterance_t*)user_data;
 
-       int uid = utt_get_param->uid;
-       int uttid = utt_get_param->uttid;
-
        if (NULL == utt_get_param) {
                SLOG(LOG_ERROR, TAG_TTSD, "[SERVER ERROR] User data is NULL " );
                SLOG(LOG_DEBUG, TAG_TTSD, "=====");
@@ -304,6 +301,9 @@ int __synthesis_result_callback(ttsp_result_event_e event, const void* data, uns
                return -1;
        }
 
+       int uid = utt_get_param->uid;
+       int uttid = utt_get_param->uttid;
+
        /* Synthesis is success */
        if (TTSP_RESULT_EVENT_START == event || TTSP_RESULT_EVENT_CONTINUE == event || TTSP_RESULT_EVENT_FINISH == event) {