From e469284b11781b41436ad0ab753e7378581ce75b Mon Sep 17 00:00:00 2001 From: Saurav Babu Date: Mon, 10 Sep 2018 16:16:34 +0530 Subject: [PATCH] Fixed memory leaks g_variant_builder_new() allocates memory and should be freed using g_variant_builder_unref(). Below is the valgrind report: ==6712== 72 bytes in 1 blocks are definitely lost in loss record 2,933 of 3,062 ==6712== at 0x48458A4: malloc (vg_replace_malloc.c:299) ==6712== by 0x4AB21B3: g_malloc (in /usr/lib/libglib-2.0.so.0.5200.2) ==6712== by 0x4ACB4A3: g_slice_alloc (in /usr/lib/libglib-2.0.so.0.5200.2) ==6712== by 0x4AE82BF: g_variant_builder_new (in /usr/lib/libglib-2.0.so.0.5200.2) ==6712== by 0x1236F1: __netconfig_update_default_connection_info (network-state.c:797) ==6712== by 0x125727: netconfig_update_default_profile (network-state.c:1206) ==6712== by 0x12AA1D: _service_signal_cb (signal-handler.c:355) ==6712== by 0x4957997: ??? (in /usr/lib/libgio-2.0.so.0.5200.2) ==6712== by 0x4AAC8E7: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.5200.2) ==6712== by 0x4AACC77: ??? (in /usr/lib/libglib-2.0.so.0.5200.2) ==6712== by 0x4AACFD7: g_main_loop_run (in /usr/lib/libglib-2.0.so.0.5200.2) ==6712== by 0x10F9F9: main (main.c:152) ==6712== ==6712== 72 bytes in 1 blocks are definitely lost in loss record 2,934 of 3,062 ==6712== at 0x48458A4: malloc (vg_replace_malloc.c:299) ==6712== by 0x4AB21B3: g_malloc (in /usr/lib/libglib-2.0.so.0.5200.2) ==6712== by 0x4ACB4A3: g_slice_alloc (in /usr/lib/libglib-2.0.so.0.5200.2) ==6712== by 0x4AE82BF: g_variant_builder_new (in /usr/lib/libglib-2.0.so.0.5200.2) ==6712== by 0x123A8D: __netconfig_update_default_connection_info (network-state.c:764) ==6712== by 0x125923: netconfig_update_default_profile (network-state.c:1193) ==6712== by 0x12B71F: _service_signal_cb (signal-handler.c:399) ==6712== by 0x4957997: ??? (in /usr/lib/libgio-2.0.so.0.5200.2) ==6712== by 0x4AAC8E7: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.5200.2) ==6712== by 0x4AACC77: ??? (in /usr/lib/libglib-2.0.so.0.5200.2) ==6712== by 0x4AACFD7: g_main_loop_run (in /usr/lib/libglib-2.0.so.0.5200.2) ==6712== by 0x10F9F9: main (main.c:152) Change-Id: I2306aaa418fb04d29f7f717a25c0abe4bf47dc30 Signed-off-by: Saurav Babu --- src/network-state.c | 5 +++++ src/signal-handler.c | 5 +++++ src/wifi-bssid-scan.c | 1 + 3 files changed, 11 insertions(+) diff --git a/src/network-state.c b/src/network-state.c index 1c08078..bd6c95a 100755 --- a/src/network-state.c +++ b/src/network-state.c @@ -744,6 +744,7 @@ static void __netconfig_update_default_connection_info(void) } params = g_variant_new("(@a{sv})", g_variant_builder_end(builder)); + g_variant_builder_unref(builder); netconfig_dbus_emit_signal(NULL, NETCONFIG_NETWORK_PATH, NETCONFIG_NETWORK_INTERFACE, "NetworkConfigChanged", @@ -787,6 +788,8 @@ static void __netconfig_update_default_connection_info(void) params); netconfig_set_vconf_int("memory/private/wifi/frequency", 0); + g_variant_builder_unref(builder); + DBG("Successfully clear IP and PROXY up"); } else if (profile != NULL) { @@ -897,6 +900,8 @@ static void __netconfig_update_default_connection_info(void) NETCONFIG_NETWORK_INTERFACE, "NetworkConfigChanged", params); + g_variant_builder_unref(builder); + DBG("Successfully update default network configuration"); } diff --git a/src/signal-handler.c b/src/signal-handler.c index e1cd52e..cfbf83a 100755 --- a/src/signal-handler.c +++ b/src/signal-handler.c @@ -143,6 +143,8 @@ static void __netconfig_extract_ipv4_signal_data(GVariant *dictionary, params = g_variant_new("(@a{sv})", g_variant_builder_end(builder)); + g_variant_builder_unref(builder); + netconfig_dbus_emit_signal(NULL, NETCONFIG_NETWORK_PATH, NETCONFIG_NETWORK_INTERFACE, "NetworkConfigChanged", params); @@ -185,6 +187,7 @@ static void __netconfig_extract_ipv6_signal_data(GVariant *dictionary, params = g_variant_new("(@a{sv})", g_variant_builder_end(builder)); + g_variant_builder_unref(builder); netconfig_dbus_emit_signal(NULL, NETCONFIG_NETWORK_PATH, NETCONFIG_NETWORK_INTERFACE, "NetworkConfigChanged", @@ -479,6 +482,7 @@ static void _service_signal_cb(GDBusConnection *conn, sig_params = g_variant_new("(@a{sv})", g_variant_builder_end(builder)); + g_variant_builder_unref(builder); netconfig_dbus_emit_signal(NULL, NETCONFIG_NETWORK_PATH, NETCONFIG_NETWORK_INTERFACE, "NetworkConfigChanged", @@ -500,6 +504,7 @@ static void _service_signal_cb(GDBusConnection *conn, sig_params = g_variant_new("(@a{sv})", g_variant_builder_end(builder)); + g_variant_builder_unref(builder); netconfig_dbus_emit_signal(NULL, NETCONFIG_NETWORK_PATH, NETCONFIG_NETWORK_INTERFACE, diff --git a/src/wifi-bssid-scan.c b/src/wifi-bssid-scan.c index 0f925f9..f285c52 100755 --- a/src/wifi-bssid-scan.c +++ b/src/wifi-bssid-scan.c @@ -436,6 +436,7 @@ static int __netconfig_wifi_bssid_create_interface(void) builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}")); g_variant_builder_add(builder, "{sv}", key, g_variant_new_string(val)); message = g_variant_new("(@a{sv})", g_variant_builder_end(builder)); + g_variant_builder_unref(builder); g_dbus_connection_call(connection, SUPPLICANT_SERVICE, -- 2.7.4