|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
From ca794c8e9583eb660f535af32c8c8281a284f270 Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
From: Daniel Mack <daniel@zonque.org>
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
Date: Tue, 7 Oct 2014 11:32:07 +0200
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
Subject: [PATCH] sd-bus: fix use-after-free in close_kdbus_msg()
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
Walk the items first, then free the memory of the message.
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
Also, while at it, make coverity happy with an explicit (void) prefix.
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
We intentionally ignore the return value here.
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
---
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
src/libsystemd/sd-bus/bus-kernel.c | 4 ++--
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
diff --git a/src/libsystemd/sd-bus/bus-kernel.c b/src/libsystemd/sd-bus/bus-kernel.c
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
index 92407133be..b431d78139 100644
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
--- a/src/libsystemd/sd-bus/bus-kernel.c
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+++ b/src/libsystemd/sd-bus/bus-kernel.c
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
@@ -808,8 +808,6 @@ static void close_kdbus_msg(sd_bus *bus, struct kdbus_msg *k) {
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
cmd.flags = 0;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
cmd.offset = (uint8_t *)k - (uint8_t *)bus->kdbus_buffer;
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
- ioctl(bus->input_fd, KDBUS_CMD_FREE, &cmd);
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
KDBUS_ITEM_FOREACH(d, k, items) {
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
if (d->type == KDBUS_ITEM_FDS)
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
@@ -817,6 +815,8 @@ static void close_kdbus_msg(sd_bus *bus, struct kdbus_msg *k) {
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
else if (d->type == KDBUS_ITEM_PAYLOAD_MEMFD)
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
safe_close(d->memfd.fd);
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
+ (void) ioctl(bus->input_fd, KDBUS_CMD_FREE, &cmd);
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
|
|
Zbigniew Jędrzejewski-Szmek |
62fe94 |
int bus_kernel_write_message(sd_bus *bus, sd_bus_message *m, bool hint_sync_call) {
|