From d91e7b34c9134c035c507ea2f27a2968b5b556ad Mon Sep 17 00:00:00 2001 From: Erik Boasson Date: Tue, 7 May 2019 15:14:34 +0800 Subject: [PATCH] fix init leak if network interface not found If at startup the requested interface cannot be found (or no suitable interface exists), the code failed to release all memory allocated in the process. Signed-off-by: Erik Boasson --- src/core/ddsi/src/q_init.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/core/ddsi/src/q_init.c b/src/core/ddsi/src/q_init.c index b2c947d..df26b1d 100644 --- a/src/core/ddsi/src/q_init.c +++ b/src/core/ddsi/src/q_init.c @@ -1330,13 +1330,10 @@ err_set_ext_address: ddsrt_free (n); } err_set_recvips: - { - int i; - for (i = 0; i < gv.n_interfaces; i++) - ddsrt_free (gv.interfaces[i].name); - } err_find_own_ip: - ddsi_tran_factories_fini (); + for (int i = 0; i < gv.n_interfaces; i++) + ddsrt_free (gv.interfaces[i].name); + ddsi_tran_factories_fini (); err_udp_tcp_init: if (config.tp_enable) ddsrt_thread_pool_free (gv.thread_pool); @@ -1665,11 +1662,8 @@ DDSRT_WARNING_MSVC_ON(6001); ddsrt_free (n); } - { - int i; - for (i = 0; i < (int) gv.n_interfaces; i++) - ddsrt_free (gv.interfaces[i].name); - } + for (int i = 0; i < (int) gv.n_interfaces; i++) + ddsrt_free (gv.interfaces[i].name); ddsi_serdatapool_free (gv.serpool); nn_xmsgpool_free (gv.xmsgpool);