Commit 1ececca7 authored by Havoc Pennington's avatar Havoc Pennington

2006-09-17 Havoc Pennington <hp@redhat.com>

	* dbus/dbus-transport.c (_dbus_transport_get_is_authenticated):
	fix so that if unix_user_function is set on windows, we still
	do the default check that the auth identity matches the bus identity
parent fe4715b6
2006-09-17 Havoc Pennington <hp@redhat.com>
* dbus/dbus-transport.c (_dbus_transport_get_is_authenticated):
fix so that if unix_user_function is set on windows, we still
do the default check that the auth identity matches the bus identity
2006-09-16 Havoc Pennington <hp@redhat.com>
* dbus/dbus-transport.c (_dbus_transport_open): modify to delegate
......
......@@ -385,7 +385,16 @@ _dbus_transport_get_is_connected (DBusTransport *transport)
*/
dbus_bool_t
_dbus_transport_get_is_authenticated (DBusTransport *transport)
{
{
/* We don't want to run unix_user_function on Windows, but it
* can exist, which allows application code to just unconditionally
* set it and have it only be invoked when appropriate.
*/
dbus_bool_t on_windows = FALSE;
#ifdef DBUS_WIN
on_windows = TRUE;
#endif
if (transport->authenticated)
return TRUE;
else
......@@ -457,7 +466,7 @@ _dbus_transport_get_is_authenticated (DBusTransport *transport)
_dbus_auth_get_identity (transport->auth, &auth_identity);
if (transport->unix_user_function != NULL)
if (transport->unix_user_function != NULL && !on_windows)
{
dbus_bool_t allow;
DBusConnection *connection;
......@@ -473,26 +482,9 @@ _dbus_transport_get_is_authenticated (DBusTransport *transport)
_dbus_verbose ("unlock %s\n", _DBUS_FUNCTION_NAME);
_dbus_connection_unlock (connection);
#ifdef DBUS_WIN
/* FIXME this is a bad hack for now because we want to ship 1.0
* without leaking any weird unix-emulation implementation details
* to the public API. The correct fix will be to move this
* unix user function invocation into dbus-transport-unix.c, and
* have a separate, appropriate function for Windows, if any.
* On Windows we may only use the session (not system) daemon
* anyway, so it might not matter.
*
* The windows and unix callbacks should both be stored/set
* in cross-platform code, so apps can unconditionally set
* them both, but only the platform-appropriate one
* should ever be invoked.
*/
allow = TRUE;
#else
allow = (* unix_user_function) (connection,
auth_identity.uid,
unix_user_data);
#endif
_dbus_verbose ("lock %s post unix user function\n", _DBUS_FUNCTION_NAME);
_dbus_connection_lock (connection);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment