mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-23 10:42:11 +01:00
gdbusauth: Represent empty data block as DATA\r\n, with no space
This is an interoperability fix. The reference implementation of D-Bus treats "DATA\r\n" as equivalent to "DATA \r\n", but sd-bus does not, and only accepts the former. Signed-off-by: Simon McVittie <smcv@collabora.com>
This commit is contained in:
parent
59bcf641aa
commit
bae15b39a0
@ -808,11 +808,21 @@ _g_dbus_auth_run_client (GDBusAuth *auth,
|
||||
{
|
||||
gchar *data;
|
||||
gsize data_len;
|
||||
gchar *encoded_data;
|
||||
|
||||
data = _g_dbus_auth_mechanism_client_data_send (mech, &data_len);
|
||||
encoded_data = _g_dbus_hexencode (data, data_len);
|
||||
s = g_strdup_printf ("DATA %s\r\n", encoded_data);
|
||||
g_free (encoded_data);
|
||||
|
||||
if (data_len == 0)
|
||||
{
|
||||
s = g_strdup ("DATA\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
gchar *encoded_data = _g_dbus_hexencode (data, data_len);
|
||||
|
||||
s = g_strdup_printf ("DATA %s\r\n", encoded_data);
|
||||
g_free (encoded_data);
|
||||
}
|
||||
|
||||
g_free (data);
|
||||
debug_print ("CLIENT: writing '%s'", s);
|
||||
if (!g_data_output_stream_put_string (dos, s, cancellable, error))
|
||||
@ -1235,13 +1245,21 @@ _g_dbus_auth_run_server (GDBusAuth *auth,
|
||||
gsize data_len;
|
||||
|
||||
data = _g_dbus_auth_mechanism_server_data_send (mech, &data_len);
|
||||
|
||||
if (data != NULL)
|
||||
{
|
||||
gchar *encoded_data;
|
||||
if (data_len == 0)
|
||||
{
|
||||
s = g_strdup ("DATA\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
gchar *encoded_data = _g_dbus_hexencode (data, data_len);
|
||||
|
||||
s = g_strdup_printf ("DATA %s\r\n", encoded_data);
|
||||
g_free (encoded_data);
|
||||
}
|
||||
|
||||
encoded_data = _g_dbus_hexencode (data, data_len);
|
||||
s = g_strdup_printf ("DATA %s\r\n", encoded_data);
|
||||
g_free (encoded_data);
|
||||
g_free (data);
|
||||
|
||||
debug_print ("SERVER: writing '%s'", s);
|
||||
|
Loading…
x
Reference in New Issue
Block a user