From 3120d1f8012377820dbc011713377ff9daab5f5c Mon Sep 17 00:00:00 2001 From: Mikael Kanstrup Date: Thu, 26 Nov 2015 09:27:51 +0100 Subject: Fix memory leaks in all_ifaces when interface list changes Valgrind report leaks of several allocations like these: 590 bytes in 50 blocks are possibly lost in loss record 29,818 of 31,670 at 0x4C2B6CD: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) by 0xCB9C8A7: __vasprintf_chk (vasprintf_chk.c:82) by 0xA3D8DCA: g_vasprintf (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.4) by 0xA3B846C: g_strdup_vprintf (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.4) by 0xA3B850B: g_strdup_printf (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.4) by 0x6F4B51: scan_local_interfaces (iface_lists.c:254) by 0x6EF3D8: iface_mon_handler2 (iface_monitor.c:113) by 0xBE56F1D: ??? (in /lib/libnl-3.so.200.3.0) by 0xBA16F19: ??? (in /usr/lib/libnl-route-3.so.200.3.0) by 0xBE54E5E: nl_cache_parse (in /lib/libnl-3.so.200.3.0) by 0xBE585CA: nl_msg_parse (in /lib/libnl-3.so.200.3.0) by 0x6EF372: iface_mon_handler (iface_monitor.c:123) When the list of network interfaces is updated allocations done for global_capture_opts.all_ifaces elements leak memory. Fixed by introducing a helper function to be used for removing an interface_t element from all_ifaces array. While at it also fixed misc leaks when updating individual allocated records of all_ifaces elements. Change-Id: I035e6936a44edeef2ebe4780931c14cde99e93a4 Reviewed-on: https://code.wireshark.org/review/12209 Petri-Dish: Alexis La Goutte Tested-by: Petri Dish Buildbot Reviewed-by: Peter Wu --- capture_opts.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'capture_opts.h') diff --git a/capture_opts.h b/capture_opts.h index 58efc54ef0..520a0e1e45 100644 --- a/capture_opts.h +++ b/capture_opts.h @@ -371,6 +371,9 @@ capture_opts_del_iface(capture_options *capture_opts, guint if_index); extern void collect_ifaces(capture_options *capture_opts); +extern void +capture_opts_free_interface_t(interface_t *device); + /* Default capture buffer size in Mbytes. */ #define DEFAULT_CAPTURE_BUFFER_SIZE 2 -- cgit v1.2.3