From 36b323e6d2286a03e13242e7396a979d1aa5cfc6 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Fri, 21 Jul 2023 14:58:19 +0930 Subject: [PATCH] connectd: fix memleak report. h->ss is allocated, but the previous not freed. It will be freed as soon as the `struct handshake` is freed, but a temporary "leak" got reported: ``` **BROKEN** connectd: MEMLEAK: 0x55adfcff2f48 **BROKEN** connectd: label=connectd/handshake.c:647:struct secret **BROKEN** connectd: backtrace: **BROKEN** connectd: ccan/ccan/tal/tal.c:477 (tal_alloc_) **BROKEN** connectd: connectd/handshake.c:647 (act_one_initiator) **BROKEN** connectd: connectd/handshake.c:1023 (initiator_handshake_) **BROKEN** connectd: connectd/connectd.c:615 (connection_out) **BROKEN** connectd: ccan/ccan/io/io.c:59 (next_plan) **BROKEN** connectd: ccan/ccan/io/io.c:407 (do_plan) **BROKEN** connectd: ccan/ccan/io/io.c:423 (io_ready) **BROKEN** connectd: ccan/ccan/io/poll.c:453 (io_loop) **BROKEN** connectd: connectd/connectd.c:2215 (main) **BROKEN** connectd: parents: **BROKEN** connectd: connectd/handshake.c:402:struct handshake **BROKEN** connectd: connectd/connectd.c:1774:struct connecting ``` Signed-off-by: Rusty Russell --- connectd/handshake.c | 1 + 1 file changed, 1 insertion(+) diff --git a/connectd/handshake.c b/connectd/handshake.c index 79f6f763d..a4d54a1e3 100644 --- a/connectd/handshake.c +++ b/connectd/handshake.c @@ -481,6 +481,7 @@ static struct io_plan *act_three_initiator(struct io_conn *conn, * 3. `se = ECDH(s.priv, re)` * * where `re` is the ephemeral public key of the responder */ + tal_free(h->ss); h->ss = tal(h, struct secret); ecdh(&h->re, h->ss); SUPERVERBOSE("# ss=0x%s", tal_hexstr(tmpctx, h->ss, sizeof(*h->ss)));