start using smack processes 27/16927/1 accepted/tizen_3.0.2014.q3_common accepted/tizen_3.0.m14.3_ivi accepted/tizen_generic accepted/tizen_ivi_panda accepted/tizen_ivi_release tizen_3.0.2014.q3_common tizen_3.0.m14.2_ivi tizen_3.0.m14.3_ivi tizen_ivi_release accepted/tizen/generic/20140227.074256 accepted/tizen/generic/20140312.110707 accepted/tizen/ivi/20140228.011128 accepted/tizen/ivi/panda/20140312.120353 accepted/tizen/ivi/release/20140312.124331 accepted/tizen/mobile/20140227.072025 submit/tizen/20140227.051925 submit/tizen/20140312.070906 submit/tizen_ivi_release/20140312.071334 submit/tizen_mobile/20141120.000000 tizen_3.0.2014.q3_common_release tizen_3.0.m14.2_ivi_release tizen_3.0.m14.3_ivi_release
authorMichael Leibowitz <michael.leibowitz@intel.com>
Thu, 27 Feb 2014 05:12:24 +0000 (21:12 -0800)
committerMichael Leibowitz <michael.leibowitz@intel.com>
Thu, 27 Feb 2014 05:16:46 +0000 (21:16 -0800)
Change-Id: I8daa785f95b3ba7215a7d3c6f27cfdb35f4c8156

src/polkit/polkitsystembusname.c

index 2a297c4..30d35d6 100644 (file)
@@ -29,6 +29,7 @@
 #include "polkitprivate.h"
 
 #include "polkitunixprocess.h"
+#include "polkitsmackprocess.h"
 
 /**
  * SECTION:polkitsystembusname
@@ -360,6 +361,8 @@ polkit_system_bus_name_get_process_sync (PolkitSystemBusName  *system_bus_name,
   PolkitSubject *ret;
   GVariant *result;
   guint32 pid;
+  guint32 uid;
+  char *label;
 
   g_return_val_if_fail (POLKIT_IS_SYSTEM_BUS_NAME (system_bus_name), NULL);
   g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), NULL);
@@ -388,7 +391,43 @@ polkit_system_bus_name_get_process_sync (PolkitSystemBusName  *system_bus_name,
   g_variant_get (result, "(u)", &pid);
   g_variant_unref (result);
 
-  ret = polkit_unix_process_new (pid);
+  result = g_dbus_connection_call_sync (connection,
+                                        "org.freedesktop.DBus",       /* name */
+                                        "/org/freedesktop/DBus",      /* object path */
+                                        "org.freedesktop.DBus",       /* interface name */
+                                        "GetConnectionUnixUser",      /* method */
+                                        g_variant_new ("(s)", system_bus_name->name),
+                                        G_VARIANT_TYPE ("(u)"),
+                                        G_DBUS_CALL_FLAGS_NONE,
+                                        -1,
+                                        cancellable,
+                                        error);
+  if (result == NULL)
+    goto out;
+
+  g_variant_get (result, "(u)", &uid);
+  g_variant_unref (result);
+
+
+
+  result = g_dbus_connection_call_sync (connection,
+                                        "org.freedesktop.DBus",       /* name */
+                                        "/org/freedesktop/DBus",      /* object path */
+                                        "org.freedesktop.DBus",       /* interface name */
+                                        "GetConnectionSmackContext",  /* method */
+                                        g_variant_new ("(s)", system_bus_name->name),
+                                        G_VARIANT_TYPE ("(s)"),
+                                        G_DBUS_CALL_FLAGS_NONE,
+                                        -1,
+                                        cancellable,
+                                        error);
+
+  if (result == NULL)
+    goto out;
+
+  g_variant_get (result, "(s)", &label);
+  g_variant_unref (result);
+  ret = polkit_smack_process_new_full (pid, 0, uid, label);
 
  out:
   if (connection != NULL)