diff options
author | Radoslaw Pajak <r.pajak@samsung.com> | 2013-10-08 15:46:53 +0200 |
---|---|---|
committer | Daniel Kowalski <d.kowalski@samsung.com> | 2013-10-23 12:34:45 +0200 |
commit | a03785ac38912814b189b75774b2d7215215e3c8 (patch) | |
tree | 0f18965481685c408f354f5b04fae8f37b10590a | |
parent | 68febe92acfd3f11e179d563dd13014e1a6be517 (diff) | |
download | kdbus-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.c | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -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); |