#include "macro.h"
#include "strv.h"
#include "set.h"
+#include "missing.h"
#include "sd-bus.h"
#include "bus-internal.h"
}
hashmap_free(b->object_callbacks);
-
bus_match_free(&b->match_callbacks);
+ bus_kernel_flush_memfd(b);
+
free(b);
}
if (r < 0)
return r;
- e = getenv("DBUS_SYSTEM_BUS_ADDRESS");
+ e = secure_getenv("DBUS_SYSTEM_BUS_ADDRESS");
if (e) {
r = sd_bus_set_address(b, e);
if (r < 0)
if (r < 0)
return r;
- e = getenv("DBUS_SESSION_BUS_ADDRESS");
+ e = secure_getenv("DBUS_SESSION_BUS_ADDRESS");
if (e) {
r = sd_bus_set_address(b, e);
if (r < 0)
goto fail;
} else {
- e = getenv("XDG_RUNTIME_DIR");
+ e = secure_getenv("XDG_RUNTIME_DIR");
if (!e) {
r = -ENOENT;
goto fail;
if (c->timeout != 0)
prioq_remove(bus->reply_callbacks_prioq, c, &c->prioq_idx);
+ r = sd_bus_message_rewind(m, true);
+ if (r < 0)
+ return r;
+
r = c->callback(bus, 0, m, c->userdata);
free(c);
l->last_iteration = bus->iteration_counter;
+ r = sd_bus_message_rewind(m, true);
+ if (r < 0)
+ return r;
+
r = l->callback(bus, 0, m, l->userdata);
if (r != 0)
return r;
c->last_iteration = bus->iteration_counter;
+ r = sd_bus_message_rewind(m, true);
+ if (r < 0)
+ return r;
+
r = c->callback(bus, 0, m, c->userdata);
if (r != 0)
return r;
c->last_iteration = bus->iteration_counter;
+ r = sd_bus_message_rewind(m, true);
+ if (r < 0)
+ return r;
+
r = c->callback(bus, 0, m, c->userdata);
if (r != 0)
return r;
if (p)
*p = 0;
- r = set_put(s, a);
- if (r < 0) {
- free(a);
-
- if (r != -EEXIST)
- return r;
- }
+ r = set_consume(s, a);
+ if (r < 0 && r != -EEXIST)
+ return r;
}
f = open_memstream(&introspection, &size);
goto null_message;
if (ret) {
+ r = sd_bus_message_rewind(m, true);
+ if (r < 0)
+ return r;
+
*ret = m;
m = NULL;
return 1;