summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRadoslaw Pajak <r.pajak@samsung.com>2013-10-10 08:34:19 +0200
committerKay Sievers <kay@vrfy.org>2013-10-10 12:27:41 +0200
commitd5e06aa1d7876280a91f2a8a7c720d7b2422ffae (patch)
tree51857829c4e1acada4740a1348e426830358d76f
parentda82d29f47eb442408f22926fa424512eb974c18 (diff)
downloadkdbus-bus-d5e06aa1d7876280a91f2a8a7c720d7b2422ffae.tar.gz
kdbus-bus-d5e06aa1d7876280a91f2a8a7c720d7b2422ffae.tar.bz2
kdbus-bus-d5e06aa1d7876280a91f2a8a7c720d7b2422ffae.zip
Release name fixed
Release name fixed to allow name releasing by priviliged user on behalf of other peer, if that peer own the name. Signed-off-by: Radoslaw Pajak <r.pajak@samsung.com>
-rw-r--r--names.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/names.c b/names.c
index 1352dfdf129..d1e32111758 100644
--- a/names.c
+++ b/names.c
@@ -398,7 +398,10 @@ int kdbus_cmd_name_release(struct kdbus_name_registry *reg,
e = __kdbus_name_lookup(reg, hash, cmd_name->name);
if (!e)
ret = -ESRCH;
- else if (e->conn != conn)
+ else if ((e->conn != conn) &&
+ (!kdbus_bus_uid_is_privileged(conn->ep->bus) ||
+ (e->conn !=
+ kdbus_bus_find_conn_by_id(conn->ep->bus, cmd_name->id))))
ret = -EPERM;
else
kdbus_name_entry_release(e);