diff options
author | Havoc Pennington <hp@redhat.com> | 2006-09-17 17:11:31 +0000 |
---|---|---|
committer | Havoc Pennington <hp@redhat.com> | 2006-09-17 17:11:31 +0000 |
commit | 1ececca7e15adc20d3f922aeb81af74c6f98e980 (patch) | |
tree | 60ea5f55fc69e464658a15aec3d59302bf0e38cc /dbus/dbus-transport.c | |
parent | fe4715b656237b89767b5dc0cba4c107541b6e0d (diff) |
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
Diffstat (limited to 'dbus/dbus-transport.c')
-rw-r--r-- | dbus/dbus-transport.c | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/dbus/dbus-transport.c b/dbus/dbus-transport.c index 7b8558dc..89d79ffe 100644 --- a/dbus/dbus-transport.c +++ b/dbus/dbus-transport.c @@ -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); |