Fix SVACE - DEREF_OF_NULL, DOUBLE_FREE
[platform/core/uifw/stt.git] / common / stt_engine.c
index e644512..e877855 100644 (file)
@@ -1,5 +1,5 @@
 /*
-*  Copyright (c) 2011-2014 Samsung Electronics Co., Ltd All Rights Reserved
+*  Copyright (c) 2011-2016 Samsung Electronics Co., Ltd All Rights Reserved
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
@@ -263,10 +263,9 @@ int stt_engine_initialize(int engine_id, sttpe_result_cb result_cb, sttpe_silenc
        ret = engine->pefuncs->initialize(result_cb, silence_cb);
        if (0 != ret) {
                SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to initialize : %s", __stt_get_engine_error_code(ret));
-               return ret;
        }
 
-       return 0;
+       return ret;
 }
 
 int stt_engine_deinitialize(int engine_id)
@@ -284,7 +283,7 @@ int stt_engine_deinitialize(int engine_id)
                SLOG(LOG_WARN, stt_tag(), "[Engine WARNING] Fail to deinitialize : %s", __stt_get_engine_error_code(ret));
        }
 
-       return 0;
+       return ret;
 }
 
 static bool __supported_language_cb(const char* language, void* user_data)
@@ -322,10 +321,9 @@ int stt_engine_get_supported_langs(int engine_id, GSList** lang_list)
        ret = engine->pefuncs->foreach_langs(__supported_language_cb, (void*)lang_list);
        if (0 != ret) {
                SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] get language list error : %s", __stt_get_engine_error_code(ret));
-               return ret;
        }
 
-       return 0;
+       return ret;
 }
 
 int stt_engine_is_valid_language(int engine_id, const char* language, bool *is_valid)
@@ -368,7 +366,7 @@ int stt_engine_set_private_data(int engine_id, const char* key, const char* data
        if (0 != ret) {
                SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to set private data(%d)", ret);
        }
-       return STTP_ERROR_NONE;
+       return ret;
 }
 
 int stt_engine_get_private_data(int engine_id, const char* key, char** data)
@@ -388,10 +386,14 @@ int stt_engine_get_private_data(int engine_id, const char* key, char** data)
        char* temp = NULL;
        int ret = engine->pefuncs->get_private_data(key, &temp);
        if (0 != ret) {
-               SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to set private data(%d)", ret);
+               SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to get private data(%d)", ret);
+               return ret;
        }
 
-       *data = strdup(temp);
+       if (NULL == temp)
+               *data = strdup("NULL");
+       else
+               *data = strdup(temp);
 
        return STTP_ERROR_NONE;
 }
@@ -540,10 +542,9 @@ int stt_engine_get_audio_type(int engine_id, sttp_audio_type_e* types, int* rate
        ret = engine->pefuncs->get_audio_format(types, rate, channels);
        if (0 != ret) {
                SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to get audio format : %s", __stt_get_engine_error_code(ret));
-               return ret;
        }
 
-       return 0;
+       return ret;
 }
 
 /* Set option */
@@ -562,10 +563,9 @@ int stt_engine_set_silence_detection(int engine_id, bool value)
                return STTP_ERROR_NOT_SUPPORTED_FEATURE;
        } else if (0 != ret) {
                SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to set silence detection : %d", ret);
-               return ret;
        }
 
-       return 0;
+       return ret;
 }
 
 int stt_engine_check_app_agreed(int engine_id, const char* appid, bool* value)
@@ -587,10 +587,9 @@ int stt_engine_check_app_agreed(int engine_id, const char* appid, bool* value)
        if (0 != ret) {
                SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to get app agreement : %s", __stt_get_engine_error_code(ret));
                *value = false;
-               return ret;
        }
 
-       return 0;
+       return ret;
 }
 
 /* Recognition */
@@ -612,10 +611,9 @@ int stt_engine_recognize_start(int engine_id, const char* lang, const char* reco
        if (0 != ret) {
                SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to start recognition : %s", __stt_get_engine_error_code(ret));
                SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to start recognition : lang(%s), recognition_type(%s), credential(%s)", lang, recognition_type, credential);
-               return ret;
        }
 
-       return 0;
+       return ret;
 }
 
 int stt_engine_set_recording_data(int engine_id, const void* data, unsigned int length)
@@ -635,10 +633,9 @@ int stt_engine_set_recording_data(int engine_id, const void* data, unsigned int
        int ret = engine->pefuncs->set_recording(data, length);
        if (0 != ret) {
                SLOG(LOG_WARN, stt_tag(), "[Engine WARNING] Fail to set recording : %s", __stt_get_engine_error_code(ret));
-               return ret;
        }
 
-       return 0;
+       return ret;
 }
 
 int stt_engine_recognize_stop(int engine_id)
@@ -653,10 +650,9 @@ int stt_engine_recognize_stop(int engine_id)
        int ret = engine->pefuncs->stop();
        if (0 != ret) {
                SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to stop : %s", __stt_get_engine_error_code(ret));
-               return ret;
        }
 
-       return 0;
+       return ret;
 }
 
 int stt_engine_recognize_cancel(int engine_id)
@@ -671,10 +667,9 @@ int stt_engine_recognize_cancel(int engine_id)
        int ret = engine->pefuncs->cancel();
        if (0 != ret) {
                SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to cancel : %s", __stt_get_engine_error_code(ret));
-               return ret;
        }
 
-       return 0;
+       return ret;
 }
 
 int stt_engine_foreach_result_time(int engine_id, void* time_info, sttpe_result_time_cb callback, void* user_data)
@@ -689,13 +684,12 @@ int stt_engine_foreach_result_time(int engine_id, void* time_info, sttpe_result_
        int ret = engine->pefuncs->foreach_result_time(time_info, callback, user_data);
        if (0 != ret) {
                SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to foreach result time : %s", __stt_get_engine_error_code(ret));
-               return ret;
        }
 
-       return 0;
+       return ret;
 }
 
-int stt_engine_recognize_start_file(int engine_id, const char* lang, const char* recognition_type, 
+int stt_engine_recognize_start_file(int engine_id, const char* lang, const char* recognition_type,
                                     const char* filepath, sttp_audio_type_e audio_type, int sample_rate, void* user_param)
 {
        if (NULL == filepath || NULL == lang || NULL == recognition_type) {
@@ -718,10 +712,9 @@ int stt_engine_recognize_start_file(int engine_id, const char* lang, const char*
        int ret = engine->pefuncs->start_file(lang, recognition_type, filepath, audio_type, sample_rate, user_param);
        if (0 != ret) {
                SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to start file recognition : %s", __stt_get_engine_error_code(ret));
-               return ret;
        }
 
-       return 0;
+       return ret;
 }
 
 int stt_engine_recognize_cancel_file(int engine_id)
@@ -741,8 +734,7 @@ int stt_engine_recognize_cancel_file(int engine_id)
        int ret = engine->pefuncs->cancel_file();
        if (0 != ret) {
                SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to start file recognition : %s", __stt_get_engine_error_code(ret));
-               return ret;
        }
 
-       return 0;
+       return ret;
 }