summaryrefslogtreecommitdiff
path: root/src/libsystemd/sd-bus/bus-match.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-03-14 21:12:36 +0100
committerLennart Poettering <lennart@poettering.net>2014-03-14 21:17:14 +0100
commitbbb6ff0216a7c081a2e63e01b1f121592b0165bb (patch)
tree3f62060e127f5fd3862b36613930b9913b5f71f2 /src/libsystemd/sd-bus/bus-match.c
parent29bfbcd675d750c0af4d7dae217722932249e435 (diff)
sd-bus: don't access invalid memory if a signal matcher was freed from its own callback
Diffstat (limited to 'src/libsystemd/sd-bus/bus-match.c')
-rw-r--r--src/libsystemd/sd-bus/bus-match.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/libsystemd/sd-bus/bus-match.c b/src/libsystemd/sd-bus/bus-match.c
index 828048806f..c54ca8d71d 100644
--- a/src/libsystemd/sd-bus/bus-match.c
+++ b/src/libsystemd/sd-bus/bus-match.c
@@ -293,6 +293,9 @@ int bus_match_run(
r = bus_maybe_reply_error(m, r, &error_buffer);
if (r != 0)
return r;
+
+ if (bus && bus->match_callbacks_modified)
+ return 0;
}
return bus_match_run(bus, node->next, m);