chiark / gitweb /
bus: fix kdbus ioctl invocation
[elogind.git] / src / libsystemd-bus / bus-kernel.c
index c10fcc54df1c12ae11fc6a29c625bf0543bbd952..e5e3536ad076aefd508c50e76a31e38b3638c28b 100644 (file)
@@ -156,6 +156,9 @@ int bus_kernel_take_fd(sd_bus *b) {
         if (r < 0)
                 return -errno;
 
+        if (asprintf(&b->unique_name, ":1.%llu", (unsigned long long) hello.id) < 0)
+                return -ENOMEM;
+
         b->is_kernel = true;
 
         r = bus_start_running(b);
@@ -172,7 +175,7 @@ int bus_kernel_connect(sd_bus *b) {
         assert(b->kernel);
 
         b->input_fd = open(b->kernel, O_RDWR|O_NOCTTY|O_CLOEXEC);
-        if (b->input_fd)
+        if (b->input_fd < 0)
                 return -errno;
 
         b->output_fd = b->input_fd;
@@ -375,7 +378,7 @@ int bus_kernel_create(const char *name, char **s) {
         if (!p)
                 return -ENOMEM;
 
-        if (ioctl(fd, KDBUS_CMD_BUS_MAKE, &fname) < 0) {
+        if (ioctl(fd, KDBUS_CMD_BUS_MAKE, fname) < 0) {
                 close_nointr_nofail(fd);
                 free(p);
                 return -errno;