[glib/glib-2-50] gdbusauth: fix crash when server data send returns NULL
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/glib-2-50] gdbusauth: fix crash when server data send returns NULL
- Date: Tue, 29 Nov 2016 22:26:11 +0000 (UTC)
commit 3f47747f6f14d839b3b5413f4d1e8c37c2a301f9
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Tue Nov 29 13:12:47 2016 +0100
gdbusauth: fix crash when server data send returns NULL
_g_dbus_auth_mechanism_server_data_send may fail in which case
we would endup getting a NULL data. In this case we should not
try to encode the data and simply let the state machine to continue.
The auth mechanism will change internally to REJECTED so we just
need to continue the iteration.
https://bugzilla.gnome.org/show_bug.cgi?id=775309
gio/gdbusauth.c | 24 +++++++++++++++---------
1 files changed, 15 insertions(+), 9 deletions(-)
---
diff --git a/gio/gdbusauth.c b/gio/gdbusauth.c
index 4036d77..a870e86 100644
--- a/gio/gdbusauth.c
+++ b/gio/gdbusauth.c
@@ -1207,19 +1207,25 @@ _g_dbus_auth_run_server (GDBusAuth *auth,
{
gchar *data;
gsize data_len;
- gchar *encoded_data;
+
data = _g_dbus_auth_mechanism_server_data_send (mech, &data_len);
- encoded_data = hexencode (data);
- s = g_strdup_printf ("DATA %s\r\n", encoded_data);
- g_free (encoded_data);
- g_free (data);
- debug_print ("SERVER: writing '%s'", s);
- if (!g_data_output_stream_put_string (dos, s, cancellable, error))
+ if (data != NULL)
{
+ gchar *encoded_data;
+
+ encoded_data = hexencode (data);
+ s = g_strdup_printf ("DATA %s\r\n", encoded_data);
+ g_free (encoded_data);
+ g_free (data);
+
+ debug_print ("SERVER: writing '%s'", s);
+ if (!g_data_output_stream_put_string (dos, s, cancellable, error))
+ {
+ g_free (s);
+ goto out;
+ }
g_free (s);
- goto out;
}
- g_free (s);
}
goto change_state;
break;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]