chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bus: update kdbus.h
[elogind.git]
/
src
/
libsystemd-bus
/
bus-control.c
diff --git
a/src/libsystemd-bus/bus-control.c
b/src/libsystemd-bus/bus-control.c
index c3186a08c2d1f33cd6189c144c2b625d8efcdbf7..a8983168abeee595d3b6b5f146f4c86b8392929c 100644
(file)
--- a/
src/libsystemd-bus/bus-control.c
+++ b/
src/libsystemd-bus/bus-control.c
@@
-96,7
+96,7
@@
static int bus_request_name_dbus1(sd_bus *bus, const char *name, uint64_t flags)
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
- "/",
+ "/
org/freedesktop/DBus
",
"org.freedesktop.DBus",
"RequestName",
NULL,
"org.freedesktop.DBus",
"RequestName",
NULL,
@@
-173,7
+173,7
@@
static int bus_release_name_dbus1(sd_bus *bus, const char *name) {
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
- "/",
+ "/
org/freedesktop/DBus
",
"org.freedesktop.DBus",
"ReleaseName",
NULL,
"org.freedesktop.DBus",
"ReleaseName",
NULL,
@@
-230,10
+230,10
@@
static int kernel_get_list(sd_bus *bus, uint64_t flags, char ***x) {
KDBUS_ITEM_FOREACH(name, name_list, names) {
KDBUS_ITEM_FOREACH(name, name_list, names) {
- if ((flags & KDBUS_NAME_LIST_UNIQUE) && name->id != previous_id) {
+ if ((flags & KDBUS_NAME_LIST_UNIQUE) && name->
owner_
id != previous_id) {
char *n;
char *n;
- if (asprintf(&n, ":1.%llu", (unsigned long long) name->id) < 0)
+ if (asprintf(&n, ":1.%llu", (unsigned long long) name->
owner_
id) < 0)
return -ENOMEM;
r = strv_push(x, n);
return -ENOMEM;
r = strv_push(x, n);
@@
-242,7
+242,7
@@
static int kernel_get_list(sd_bus *bus, uint64_t flags, char ***x) {
return -ENOMEM;
}
return -ENOMEM;
}
- previous_id = name->id;
+ previous_id = name->
owner_
id;
}
if (name->size > sizeof(*name) && service_name_is_valid(name->name)) {
}
if (name->size > sizeof(*name) && service_name_is_valid(name->name)) {
@@
-295,7
+295,7
@@
static int bus_list_names_dbus1(sd_bus *bus, char ***acquired, char ***activatab
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
- "/",
+ "/
org/freedesktop/DBus
",
"org.freedesktop.DBus",
"ListNames",
NULL,
"org.freedesktop.DBus",
"ListNames",
NULL,
@@
-315,7
+315,7
@@
static int bus_list_names_dbus1(sd_bus *bus, char ***acquired, char ***activatab
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
- "/",
+ "/
org/freedesktop/DBus
",
"org.freedesktop.DBus",
"ListActivatableNames",
NULL,
"org.freedesktop.DBus",
"ListActivatableNames",
NULL,
@@
-387,6
+387,10
@@
static int bus_get_owner_kdbus(
conn_info = (struct kdbus_conn_info *) ((uint8_t *) bus->kdbus_buffer + cmd->offset);
conn_info = (struct kdbus_conn_info *) ((uint8_t *) bus->kdbus_buffer + cmd->offset);
+ /* Non-activated names are considered not available */
+ if (conn_info->flags & KDBUS_HELLO_ACTIVATOR)
+ return name[0] == ':' ? -ENXIO : -ENOENT;
+
c = bus_creds_new();
if (!c)
return -ENOMEM;
c = bus_creds_new();
if (!c)
return -ENOMEM;
@@
-561,7
+565,7
@@
static int bus_get_owner_dbus1(
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
- "/",
+ "/
org/freedesktop/DBus
",
"org.freedesktop.DBus",
"GetNameOwner",
NULL,
"org.freedesktop.DBus",
"GetNameOwner",
NULL,
@@
-599,7
+603,7
@@
static int bus_get_owner_dbus1(
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
- "/",
+ "/
org/freedesktop/DBus
",
"org.freedesktop.DBus",
"GetConnectionUnixProcessID",
NULL,
"org.freedesktop.DBus",
"GetConnectionUnixProcessID",
NULL,
@@
-628,7
+632,7
@@
static int bus_get_owner_dbus1(
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
- "/",
+ "/
org/freedesktop/DBus
",
"org.freedesktop.DBus",
"GetConnectionUnixUser",
NULL,
"org.freedesktop.DBus",
"GetConnectionUnixUser",
NULL,
@@
-655,7
+659,7
@@
static int bus_get_owner_dbus1(
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
- "/",
+ "/
org/freedesktop/DBus
",
"org.freedesktop.DBus",
"GetConnectionSELinuxSecurityContext",
NULL,
"org.freedesktop.DBus",
"GetConnectionSELinuxSecurityContext",
NULL,
@@
-799,7
+803,7
@@
static int add_name_change_match(sd_bus *bus,
item->name_change.new.id = new_owner_id;
if (name)
item->name_change.new.id = new_owner_id;
if (name)
-
strcpy(item->name_change.name, name
);
+
memcpy(item->name_change.name, name, l
);
/* If the old name is unset or empty, then
* this can match against added names */
/* If the old name is unset or empty, then
* this can match against added names */
@@
-850,7
+854,9
@@
static int add_name_change_match(sd_bus *bus,
m->cookie = cookie;
item = m->items;
m->cookie = cookie;
item = m->items;
- item->size = offsetof(struct kdbus_item, id_change) + sizeof(struct kdbus_notify_id_change);
+ item->size =
+ offsetof(struct kdbus_item, id_change) +
+ sizeof(struct kdbus_notify_id_change);
item->id_change.id = name_id;
/* If the old name is unset or empty, then this can
item->id_change.id = name_id;
/* If the old name is unset or empty, then this can
@@
-1017,7
+1023,7
@@
int bus_add_match_internal_kernel(
m = alloca0(sz);
m->size = sz;
m->cookie = cookie;
m = alloca0(sz);
m->size = sz;
m->cookie = cookie;
- m->id = id;
+ m->
owner_
id = id;
item = m->items;
item->size = offsetof(struct kdbus_item, id) + sizeof(uint64_t);
item = m->items;
item->size = offsetof(struct kdbus_item, id) + sizeof(uint64_t);
@@
-1067,7
+1073,7
@@
static int bus_add_match_internal_dbus1(
return sd_bus_call_method(
bus,
"org.freedesktop.DBus",
return sd_bus_call_method(
bus,
"org.freedesktop.DBus",
- "/",
+ "/
org/freedesktop/DBus
",
"org.freedesktop.DBus",
"AddMatch",
NULL,
"org.freedesktop.DBus",
"AddMatch",
NULL,
@@
-1105,7
+1111,7
@@
int bus_remove_match_internal_kernel(
zero(m);
m.size = offsetof(struct kdbus_cmd_match, items);
m.cookie = cookie;
zero(m);
m.size = offsetof(struct kdbus_cmd_match, items);
m.cookie = cookie;
- m.id = id;
+ m.
owner_
id = id;
r = ioctl(bus->input_fd, KDBUS_CMD_MATCH_REMOVE, &m);
if (r < 0)
r = ioctl(bus->input_fd, KDBUS_CMD_MATCH_REMOVE, &m);
if (r < 0)
@@
-1124,7
+1130,7
@@
static int bus_remove_match_internal_dbus1(
return sd_bus_call_method(
bus,
"org.freedesktop.DBus",
return sd_bus_call_method(
bus,
"org.freedesktop.DBus",
- "/",
+ "/
org/freedesktop/DBus
",
"org.freedesktop.DBus",
"RemoveMatch",
NULL,
"org.freedesktop.DBus",
"RemoveMatch",
NULL,