From: Evgeny Vereshchagin Date: Tue, 8 Aug 2017 06:42:51 +0000 (+0300) Subject: sd-bus: free everything when bus_set_address_user fails (#6552) X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=d9b39ceb49789a0ca16f8dd0a5a984c713db59b2;p=elogind.git sd-bus: free everything when bus_set_address_user fails (#6552) Fixes: ``` $ env -i valgrind --leak-check=full ./build/test-bus-chat ... ==7763== 1,888 (1,824 direct, 64 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2 ==7763== at 0x4C2FA50: calloc (vg_replace_malloc.c:711) ==7763== by 0x4F8FF9A: sd_bus_new (sd-bus.c:175) ==7763== by 0x4F938BF: sd_bus_open_user (sd-bus.c:1138) ==7763== by 0x109ACD: server_init (test-bus-chat.c:70) ==7763== by 0x10BCF8: main (test-bus-chat.c:526) ==7763== ``` Closes #6481 --- diff --git a/src/libelogind/sd-bus/sd-bus.c b/src/libelogind/sd-bus/sd-bus.c index 5df358f5a..b72312cd9 100644 --- a/src/libelogind/sd-bus/sd-bus.c +++ b/src/libelogind/sd-bus/sd-bus.c @@ -1318,7 +1318,7 @@ _public_ int sd_bus_open_user(sd_bus **ret) { r = bus_set_address_user(b); if (r < 0) - return r; + goto fail; b->bus_client = true; b->is_user = true;