- r = sd_bus_get_owner(bus, arg0, SD_BUS_CREDS_SELINUX_CONTEXT, &creds);
+ r = sd_bus_get_owner(bus, name, mask, &c);
+ if (r == -ENOENT || r == -ENXIO)
+ return sd_bus_error_setf(error, SD_BUS_ERROR_NAME_HAS_NO_OWNER, "Name %s is currently not owned by anyone.", name);
+ if (r < 0)
+ return r;
+
+ if ((c->mask & mask) != mask)
+ return -ENOTSUP;
+
+ *_creds = c;
+ c = NULL;
+
+ return 0;
+}
+
+static int driver_get_security_context(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus_error *error) {
+ _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
+ _cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL;
+ int r;
+
+ r = get_creds(bus, m, SD_BUS_CREDS_SELINUX_CONTEXT, &creds, error);