Use dbus_set_error_from_message() to check for an error
authorРуслан Ижбулатов <lrn1986@gmail.com>
Thu, 23 Jun 2016 12:26:45 +0000 (12:26 +0000)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Thu, 30 Jun 2016 12:52:44 +0000 (13:52 +0100)
Do not rely on dbus_message_get_args() to turn an ERROR message
into DBusError.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=96653
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
test/dbus-daemon.c

index 72bcd08..99d2bc6 100644 (file)
@@ -526,7 +526,18 @@ test_processid (Fixture *f,
   while (m == NULL)
     test_main_context_iterate (f->ctx, TRUE);
 
-  if (dbus_message_get_args (m, &error,
+  if (dbus_set_error_from_message (&error, m))
+    {
+      g_assert_cmpstr (error.name, ==, DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN);
+
+#ifdef PID_SHOULD_WORK
+      g_error ("Expected pid to be passed, but got %s: %s",
+          error.name, error.message);
+#endif
+
+      dbus_error_free (&error);
+    }
+  else if (dbus_message_get_args (m, &error,
         DBUS_TYPE_UINT32, &pid,
         DBUS_TYPE_INVALID))
     {
@@ -545,14 +556,7 @@ test_processid (Fixture *f,
     }
   else
     {
-      g_assert_cmpstr (error.name, ==, DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN);
-
-#ifdef PID_SHOULD_WORK
-      g_error ("Expected pid to be passed, but got %s: %s",
-          error.name, error.message);
-#endif
-
-      dbus_error_free (&error);
+      g_error ("Unexpected error: %s: %s", error.name, error.message);
     }
 }