Merge "Fix bug about checking privilege" into tizen
[platform/core/uifw/stt.git] / client / stt.c
old mode 100755 (executable)
new mode 100644 (file)
index 82c47cb..163d67a
@@ -92,13 +92,14 @@ static int __check_privilege_initialize()
 static int __check_privilege(const char* uid, const char * privilege)
 {
        FILE *fp = NULL;
-       char smack_label[1024] = "/proc/self/attr/current";
+       char label_path[1024] = "/proc/self/attr/current";
+       char smack_label[1024] = {'\0',};
 
        if (!p_cynara) {
            return false;
        }
 
-       fp = fopen(smack_label, "r");
+       fp = fopen(label_path, "r");
        if (fp != NULL) {
            if (fread(smack_label, 1, sizeof(smack_label), fp) <= 0)
                SLOG(LOG_ERROR, TAG_STTC, "[ERROR] fail to fread");
@@ -110,8 +111,10 @@ static int __check_privilege(const char* uid, const char * privilege)
        char *session = cynara_session_from_pid(pid);
        int ret = cynara_check(p_cynara, smack_label, session, uid, privilege);
        SLOG(LOG_DEBUG, TAG_STTC, "[Client]cynara_check returned %d(%s)", ret, (CYNARA_API_ACCESS_ALLOWED == ret) ? "Allowed" : "Denied");
-       if (session)
-           free(session);
+       if (session) {
+               free(session);
+               session = NULL;
+       }
 
        if (ret != CYNARA_API_ACCESS_ALLOWED)
            return false;
@@ -244,7 +247,7 @@ void __stt_config_engine_changed_cb(const char* engine_id, const char* setting,
        if (NULL != client->engine_changed_cb) {
                client->engine_changed_cb(stt, engine_id, language, support_silence, need_credential, client->engine_changed_user_data);
        } else {
-               SLOG(LOG_WARN, TAG_STTC, "No registered callback function of supported languages");
+               SLOG(LOG_WARN, TAG_STTC, "No registered callback function for engine change");
        }
        return;
 }
@@ -530,6 +533,7 @@ int stt_set_engine(stt_h stt, const char* engine_id)
 
        if (NULL != client->current_engine_id) {
                free(client->current_engine_id);
+               client->current_engine_id = NULL;
        }
 
        SLOG(LOG_DEBUG, TAG_STTC, "===== engined_id(%s)", engine_id);
@@ -568,6 +572,10 @@ int stt_set_credential(stt_h stt, const char* credential)
                return STT_ERROR_INVALID_STATE;
        }
 
+       if (NULL != client->credential) {
+               free(client->credential);
+               client->credential = NULL;
+       }
        client->credential = strdup(credential);
 
        SLOG(LOG_DEBUG, TAG_STTC, "=====");
@@ -707,7 +715,7 @@ static Eina_Bool __stt_connect_daemon(void *data)
        }
 
        g_connect_timer = NULL;
-       SLOG(LOG_DEBUG, TAG_STTC, "===== Connect daemon");
+       SLOG(LOG_DEBUG, TAG_STTC, "===== Connect stt-service");
 
        /* request initialization */
        bool silence_supported = false;
@@ -727,12 +735,13 @@ static Eina_Bool __stt_connect_daemon(void *data)
                SLOG(LOG_ERROR, TAG_STTC, "[WARNING] Fail to connection. Retry to connect");
                return EINA_TRUE;
        } else {
-               /* success to connect stt-daemon */
+               /* success to connect stt-service */
                client->silence_supported = silence_supported;
                client->credential_needed = credential_needed;
                SLOG(LOG_DEBUG, TAG_STTC, "Supported options : silence(%s), credential(%s)", silence_supported ? "support" : "no support", credential_needed ? "need" : "no need");
        }
 
+#ifdef __UNUSED_CODES__
        if (NULL != client->current_engine_id) {
                ret = -1;
                int count = 0;
@@ -764,7 +773,7 @@ static Eina_Bool __stt_connect_daemon(void *data)
                        }
                }
        }
-
+#endif
        SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] uid(%d)", client->uid);
 
        client->before_state = client->current_state;
@@ -948,6 +957,7 @@ int stt_foreach_supported_languages(stt_h stt, stt_supported_language_cb callbac
 
        if (NULL != current_engine_id) {
                free(current_engine_id);
+               current_engine_id = NULL;
        }
 
        client->supported_lang_cb = NULL;