chiark / gitweb /
bus: include connection name in credentials structure
[elogind.git] / src / libsystemd / sd-bus / bus-control.c
index e7e9ba07b0a4f5bab1681f1036624cf9ee5415f0..55482394264c2a70a3e8071199f6bafdf29dd033 100644 (file)
@@ -379,9 +379,10 @@ static int bus_get_owner_kdbus(
                 cmd = alloca0(size);
                 strcpy(cmd->name, name);
         }
                 cmd = alloca0(size);
                 strcpy(cmd->name, name);
         }
-        cmd->flags = KDBUS_ATTACH_NAMES;
 
         cmd->size = size;
 
         cmd->size = size;
+        kdbus_translate_attach_flags(mask, (uint64_t*) &cmd->flags);
+
         r = ioctl(bus->input_fd, KDBUS_CMD_CONN_INFO, cmd);
         if (r < 0)
                 return -errno;
         r = ioctl(bus->input_fd, KDBUS_CMD_CONN_INFO, cmd);
         if (r < 0)
                 return -errno;
@@ -553,6 +554,18 @@ static int bus_get_owner_kdbus(
                                 c->mask |= SD_BUS_CREDS_WELL_KNOWN_NAMES;
                         }
                         break;
                                 c->mask |= SD_BUS_CREDS_WELL_KNOWN_NAMES;
                         }
                         break;
+
+                case KDBUS_ITEM_CONN_NAME:
+                        if ((mask & SD_BUS_CREDS_CONNECTION_NAME)) {
+                                c->conn_name = strdup(item->str);
+                                if (!c->conn_name) {
+                                        r = -ENOMEM;
+                                        goto fail;
+                                }
+
+                                c->mask |= SD_BUS_CREDS_CONNECTION_NAME;
+                        }
+                        break;
                 }
         }
 
                 }
         }