chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sd-bus: don't leak kdbus notifications
[elogind.git]
/
src
/
libelogind
/
sd-bus
/
bus-kernel.c
diff --git
a/src/libelogind/sd-bus/bus-kernel.c
b/src/libelogind/sd-bus/bus-kernel.c
index f08db2da893c25d13f4986b4b50cbe9f38ade677..e3fac01f9284a5885b5a90a7cd39cd392496da85 100644
(file)
--- a/
src/libelogind/sd-bus/bus-kernel.c
+++ b/
src/libelogind/sd-bus/bus-kernel.c
@@
-1385,15
+1385,16
@@
int bus_kernel_read_message(sd_bus *bus, bool hint_priority, int64_t priority) {
r = 0;
}
r = 0;
}
- } else if (k->payload_type == KDBUS_PAYLOAD_KERNEL)
+ if (r <= 0)
+ close_kdbus_msg(bus, k);
+ } else if (k->payload_type == KDBUS_PAYLOAD_KERNEL) {
r = bus_kernel_translate_message(bus, k);
r = bus_kernel_translate_message(bus, k);
- else {
+ close_kdbus_msg(bus, k);
+ } else {
log_debug("Ignoring message with unknown payload type %llu.", (unsigned long long) k->payload_type);
r = 0;
log_debug("Ignoring message with unknown payload type %llu.", (unsigned long long) k->payload_type);
r = 0;
- }
-
- if (r <= 0)
close_kdbus_msg(bus, k);
close_kdbus_msg(bus, k);
+ }
return r < 0 ? r : 1;
}
return r < 0 ? r : 1;
}