From 460383e59f6e953c747d927ef97003796ff82804 Mon Sep 17 00:00:00 2001 From: Lukasz Skalski Date: Wed, 23 Nov 2016 12:18:07 +0100 Subject: [PATCH] kdbus: check return status of KDBUS_CMD_CONN_INFO iotcl Change-Id: If6ea3c1825333aca2af4a2599b0187b1ff931b34 --- gio/gkdbus.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/gio/gkdbus.c b/gio/gkdbus.c index f567aa5..c2aa712 100755 --- a/gio/gkdbus.c +++ b/gio/gkdbus.c @@ -1160,8 +1160,7 @@ _g_kdbus_GetListNames (GKDBusWorker *worker, static gboolean g_kdbus_NameHasOwner_internal (GKDBusWorker *worker, - const gchar *name, - GError **error) + const gchar *name) { struct kdbus_cmd_info *cmd; struct kdbus_info *conn_info; @@ -1186,6 +1185,9 @@ g_kdbus_NameHasOwner_internal (GKDBusWorker *worker, cmd->size = size; ret = ioctl(worker->fd, KDBUS_CMD_CONN_INFO, cmd); + if (ret < 0) + return FALSE; + conn_info = (struct kdbus_info *) ((guint8 *) worker->kdbus_buffer + cmd->offset); if (conn_info->flags & KDBUS_HELLO_ACTIVATOR) @@ -1233,7 +1235,7 @@ _g_kdbus_GetListQueuedOwners (GKDBusWorker *worker, return NULL; } - if (!g_kdbus_NameHasOwner_internal (worker, name, error)) + if (!g_kdbus_NameHasOwner_internal (worker, name)) { g_set_error (error, G_DBUS_ERROR, @@ -1306,10 +1308,16 @@ _g_kdbus_NameHasOwner (GKDBusWorker *worker, if (g_strcmp0 (name, "org.freedesktop.DBus") == 0) return TRUE; - if (!g_kdbus_NameHasOwner_internal (worker, name, error)) - return FALSE; - else - return TRUE; + if (!g_kdbus_NameHasOwner_internal (worker, name)) + { + g_set_error (error, + G_DBUS_ERROR, + G_DBUS_ERROR_NAME_HAS_NO_OWNER, + "Could not get owner of name '%s': no such name", name); + return FALSE; + } + + return TRUE; } @@ -1337,7 +1345,7 @@ _g_kdbus_GetConnInfo (GKDBusWorker *worker, goto error; } - if (!g_kdbus_NameHasOwner_internal (worker, name, error)) + if (!g_kdbus_NameHasOwner_internal (worker, name)) { g_set_error (error, G_DBUS_ERROR, @@ -1617,7 +1625,7 @@ _g_kdbus_StartServiceByName (GKDBusWorker *worker, if (g_strcmp0 (name, "org.freedesktop.DBus") == 0) return G_BUS_START_SERVICE_REPLY_ALREADY_RUNNING; - if (!g_kdbus_NameHasOwner_internal (worker, name, error)) + if (!g_kdbus_NameHasOwner_internal (worker, name)) { GDBusMessage *message; GDBusMessage *reply; -- 2.7.4