kdbus: check return status of KDBUS_CMD_CONN_INFO iotcl 21/99621/2
authorLukasz Skalski <l.skalski@samsung.com>
Wed, 23 Nov 2016 11:18:07 +0000 (12:18 +0100)
committerINSUN PYO <insun.pyo@samsung.com>
Thu, 24 Nov 2016 03:23:00 +0000 (12:23 +0900)
Change-Id: If6ea3c1825333aca2af4a2599b0187b1ff931b34

gio/gkdbus.c

index f567aa5..c2aa712 100755 (executable)
@@ -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;