EXPORT_API int subsession_get_current_user(int session_uid, subsession_user_t user) {
- return_if(session_uid_is_not_valid(session_uid,
- current_user_ptr_is_null(user)))
+ return_if(session_uid_is_not_valid(session_uid, current_user_ptr_is_null(user)))
MAKE_SURE_CONNECTION_IS_NOT_NULL();
- GVariant * params = g_variant_new("(i)", session_uid);
- if(params == NULL) {
+ GVariant *params = g_variant_new("(i)", session_uid);
+ if (params == NULL) {
return_with_log_error_result_(SUBSESSION_ERROR_OUT_OF_MEMORY)
}
- GVariant *retgv = NULL;
GError *call_sync_error = NULL;
-
- retgv = g_dbus_connection_call_sync(
- conn_config_,
- dbus_method_call.GetCurrentUser, params,
- NULL,
- G_DBUS_CALL_FLAGS_NONE,
- libsessiond_default_timeout,
- NULL,
- &call_sync_error
- );
+ g_autoptr(GVariant) retgv = g_dbus_connection_call_sync(conn_config_,
+ dbus_method_call.GetCurrentUser,
+ params,
+ NULL,
+ G_DBUS_CALL_FLAGS_NONE,
+ libsessiond_default_timeout,
+ NULL,
+ &call_sync_error);
if (!retgv || call_sync_error) {
LOGE("Dbus error: %s for method: %s", g_dbus_error_get_remote_error(call_sync_error), dbus_method_call.GetCurrentUser);
int ret = map_dbus_call_error_to_return_value(call_sync_error);
- log_if_error_(ret);
g_error_free(call_sync_error);
+ log_if_error_(ret);
return ret;
}
- char *get_user = NULL;
+ g_autofree char *get_user = NULL;
maybe_g_variant_get_or_error_invalid(retgv,"(s)", &get_user);
-
- if(get_user == NULL) {
+ if (get_user == NULL) {
return_with_log_error_result_(SUBSESSION_ERROR_OUT_OF_MEMORY);
}
-
- memcpy(user, get_user, strnlen(get_user, SUBSESSION_USER_MAXLEN)+1);
- free(get_user);
+ memcpy(user, get_user, strnlen(get_user, sizeof(subsession_user_t)-1) + 1);
return SUBSESSION_ERROR_NONE;
}