Add regression test for LinuxSecurityLabel credential
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Wed, 11 Feb 2015 13:19:43 +0000 (13:19 +0000)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Wed, 18 Feb 2015 10:35:05 +0000 (10:35 +0000)
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=89041
Reviewed-by: Philip Withnall <philip.withnall@collabora.co.uk>
test/dbus-daemon.c

index 4516091..26786fc 100644 (file)
@@ -28,6 +28,8 @@
 
 #include "test-utils-glib.h"
 
+#include <string.h>
+
 #ifdef DBUS_UNIX
 # include <unistd.h>
 # include <sys/types.h>
@@ -305,7 +307,8 @@ test_creds (Fixture *f,
   enum {
       SEEN_UNIX_USER = 1,
       SEEN_PID = 2,
-      SEEN_WINDOWS_SID = 4
+      SEEN_WINDOWS_SID = 4,
+      SEEN_LINUX_SECURITY_LABEL = 8
   } seen = 0;
 
   if (m == NULL)
@@ -411,6 +414,27 @@ test_creds (Fixture *f,
 #endif
           seen |= SEEN_PID;
         }
+      else if (g_strcmp0 (name, "LinuxSecurityLabel") == 0)
+        {
+#ifdef __linux__
+          gchar *label;
+          int len;
+          DBusMessageIter ay_iter;
+
+          g_assert (!(seen & SEEN_LINUX_SECURITY_LABEL));
+          g_assert_cmpuint (dbus_message_iter_get_arg_type (&var_iter), ==,
+              DBUS_TYPE_ARRAY);
+          dbus_message_iter_recurse (&var_iter, &ay_iter);
+          g_assert_cmpuint (dbus_message_iter_get_arg_type (&ay_iter), ==,
+              DBUS_TYPE_BYTE);
+          dbus_message_iter_get_fixed_array (&ay_iter, &label, &len);
+          g_message ("%s of this process is %s", name, label);
+          g_assert_cmpuint (strlen (label) + 1, ==, len);
+          seen |= SEEN_LINUX_SECURITY_LABEL;
+#else
+          g_assert_not_reached ();
+#endif
+        }
 
       dbus_message_iter_next (&arr_iter);
     }