#include <cynara-creds-socket.h>
static void _ms_security_cynara_log_error(const char *function, int error_code);
-static int _ms_security_cynara_new(ms_security_t *security);
+static void _ms_security_cynara_new(ms_security_t *security);
static void _ms_security_cynara_free(ms_security_t *security);
static void _ms_security_cynara_log_error(const char *function, int error_code)
LOGE("[CYNARA] %s function failed with error %d : %s", function, error_code, buf);
}
-static int _ms_security_cynara_new(ms_security_t *security)
+static void _ms_security_cynara_new(ms_security_t *security)
{
- int ret, error = -1;
+ int ret;
cynara_configuration *p_conf = NULL;
- muse_return_val_if_fail(security, MM_ERROR_INVALID_ARGUMENT);
+ muse_return_if_fail(security);
if (security->p_cynara) {
LOGE("[CYNARA] Improper usage of cynara");
goto end;
}
- error = 0;
end:
cynara_configuration_destroy(p_conf);
- return error;
}
static void _ms_security_cynara_free(ms_security_t *security)
muse_return_if_fail(security);
+ g_mutex_init(&security->lock);
+
_ms_security_cynara_new(security);
LOGD("Leave");
_ms_security_cynara_free(security);
+ g_mutex_clear(&security->lock);
+
g_free(security);
LOGD("Leave");
}
muse_return_val_if_fail(security, false);
+ LOGI("Enter [fd %d privilege %s]", fd, privilege);
+
+ g_mutex_lock(&security->lock);
+
ret = cynara_creds_socket_get_user(fd, USER_METHOD_DEFAULT, &user);
if (ret != CYNARA_API_SUCCESS) {
_ms_security_cynara_log_error("cynara_creds_socket_get_user", ret);
MUSE_FREE(session);
MUSE_FREE(client);
- if (ret == CYNARA_API_ACCESS_ALLOWED)
- return true;
- else
- return false;
+ g_mutex_unlock(&security->lock);
+
+ LOGI("Leave [fd %d privilege %s] RET [%d]", fd, privilege, ret);
+
+ return (ret == CYNARA_API_ACCESS_ALLOWED);
}