Fall back to SO_PEERCRED if credentials passing fails

Turns out libdbus doesn't send struct ucred credentials on linux, but
just relies on the SO_PEERCRED support. However, gdbus does send, and
expect to recieve a ucred credential. So, when libdbus talks to a
gdbus server the authentication fails to send the credentials.

We fix this by falling back to g_socket_get_credentials() if we don't
get any credential messages.
This commit is contained in:
Alexander Larsson 2012-04-12 16:50:20 +02:00
parent ec91ed00f1
commit 386f0f29fd

View File

@ -570,7 +570,9 @@ g_unix_connection_receive_credentials (GUnixConnection *connection,
goto out;
}
if (g_unix_credentials_message_is_supported ())
if (g_unix_credentials_message_is_supported () &&
/* Fall back on get_credentials if the other side didn't send the credentials */
nscm > 0)
{
if (nscm != 1)
{