diff options
Diffstat (limited to 'dbus')
| -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); | 
