summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRadoslaw Pajak <r.pajak@samsung.com>2013-10-08 15:46:53 +0200
committerDaniel Kowalski <d.kowalski@samsung.com>2013-10-23 12:34:45 +0200
commita03785ac38912814b189b75774b2d7215215e3c8 (patch)
tree0f18965481685c408f354f5b04fae8f37b10590a
parent68febe92acfd3f11e179d563dd13014e1a6be517 (diff)
downloadkdbus-bus-a03785ac38912814b189b75774b2d7215215e3c8.tar.gz
kdbus-bus-a03785ac38912814b189b75774b2d7215215e3c8.tar.bz2
kdbus-bus-a03785ac38912814b189b75774b2d7215215e3c8.zip
[feature-fix] fix for registering starters as names
- fix for added feature, that connection can register name with KDBUS_NAME_STARTER flag, which could lead to daemon crash and ignore kill Change-Id: Iccecc561dda1bb1d4d8af38196a2e11eb86812a8 Signed-off-by: Radoslaw Pajak <r.pajak@samsung.com>
-rw-r--r--names.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/names.c b/names.c
index feef88e16ab..ed683d9a1ac 100644
--- a/names.c
+++ b/names.c
@@ -118,6 +118,9 @@ static void kdbus_name_entry_release(struct kdbus_name_entry *e)
{
struct kdbus_name_queue_item *q;
+ if(e->conn == e->starter) //starter is releasing name
+ e->starter = NULL;
+
kdbus_name_entry_detach(e);
if (list_empty(&e->queue_list)) {
@@ -350,8 +353,11 @@ int kdbus_cmd_name_acquire(struct kdbus_name_registry *reg,
goto exit_unlock_free;
}
- if ((conn->flags & KDBUS_HELLO_STARTER) || (cmd_name->flags & KDBUS_NAME_STARTER) )
+ if ((conn->flags & KDBUS_HELLO_STARTER) || (cmd_name->flags & KDBUS_NAME_STARTER))
+ {
e->starter = conn;
+ cmd_name->flags &= ~KDBUS_NAME_QUEUE;
+ }
e->flags = cmd_name->flags;
INIT_LIST_HEAD(&e->queue_list);