From 18ee085c155dcd5f196f2ef9b712698dfd377f82 Mon Sep 17 00:00:00 2001 From: David Herrmann Date: Fri, 12 Dec 2014 14:02:05 +0100 Subject: [PATCH] bus: fix assert() on HELLO error-path Make sure we don't call into any bus_kernel_*() functions before b->is_kernel is set to true. Hard-code the CMD_FREE just like the other helpers do. --- src/libsystemd/sd-bus/bus-kernel.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libsystemd/sd-bus/bus-kernel.c b/src/libsystemd/sd-bus/bus-kernel.c index 112292735..d910d8e49 100644 --- a/src/libsystemd/sd-bus/bus-kernel.c +++ b/src/libsystemd/sd-bus/bus-kernel.c @@ -815,6 +815,10 @@ fail: } int bus_kernel_take_fd(sd_bus *b) { + struct kdbus_cmd_free cmd_free = { + .size = sizeof(cmd_free), + .flags = 0, + }; struct kdbus_bloom_parameter *bloom = NULL; struct kdbus_cmd_hello *hello; struct kdbus_item_list *items; @@ -982,7 +986,8 @@ int bus_kernel_take_fd(sd_bus *b) { return bus_start_running(b); fail: - (void) bus_kernel_cmd_free(b, hello->offset); + cmd_free.offset = hello->offset; + (void) ioctl(b->input_fd, KDBUS_CMD_FREE, &cmd_free); return r; } -- 2.30.2