From 7bc5c91f34d27ceeb0a1959c0289de5006208f41 Mon Sep 17 00:00:00 2001 From: Jiung Date: Thu, 28 Sep 2017 14:28:12 +0900 Subject: [PATCH] Fix memory leak Change-Id: I0189a86f870ccad14a61569ae11608fe18380545 Signed-off-by: Yu jiung --- packaging/wifi-direct-manager.spec | 2 +- plugin/wpasupplicant/ctrl_iface_dbus/wfd-plugin-wpasupplicant.c | 1 + src/wifi-direct-iface.c | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packaging/wifi-direct-manager.spec b/packaging/wifi-direct-manager.spec index c139f9f..48950a7 100644 --- a/packaging/wifi-direct-manager.spec +++ b/packaging/wifi-direct-manager.spec @@ -6,7 +6,7 @@ Name: wifi-direct-manager Summary: Wi-Fi Direct manger -Version: 1.2.246 +Version: 1.2.247 Release: 1 Group: Network & Connectivity/Wireless License: Apache-2.0 diff --git a/plugin/wpasupplicant/ctrl_iface_dbus/wfd-plugin-wpasupplicant.c b/plugin/wpasupplicant/ctrl_iface_dbus/wfd-plugin-wpasupplicant.c index 9d7a193..d21a0f6 100644 --- a/plugin/wpasupplicant/ctrl_iface_dbus/wfd-plugin-wpasupplicant.c +++ b/plugin/wpasupplicant/ctrl_iface_dbus/wfd-plugin-wpasupplicant.c @@ -522,6 +522,7 @@ static int __ws_unpack_ay_malloc(unsigned char **dst, GVariantIter *iter) tmp_dst = (unsigned char *)g_try_malloc0(length + 1); if (!tmp_dst) { WDP_LOGE("failed to allocate memory"); + g_variant_iter_free(iter_copy); return 0; } diff --git a/src/wifi-direct-iface.c b/src/wifi-direct-iface.c index fc38c46..0600626 100644 --- a/src/wifi-direct-iface.c +++ b/src/wifi-direct-iface.c @@ -895,8 +895,6 @@ static void __wfd_manager_manage_iface_handler(const gchar *method_name, int peer_cnt = 0; int i = 0; - builder_peers = g_variant_builder_new(G_VARIANT_TYPE("aa{sv}")); - /* even though status is not CONNECTED, * this command can be excuted only when group exist */ if (!manager->group && manager->state < WIFI_DIRECT_STATE_CONNECTED) { @@ -913,6 +911,7 @@ static void __wfd_manager_manage_iface_handler(const gchar *method_name, goto failed; } + builder_peers = g_variant_builder_new(G_VARIANT_TYPE("aa{sv}")); for (i = 0; i < peer_cnt; i++) { GVariantBuilder builder_peer; g_variant_builder_init(&builder_peer, G_VARIANT_TYPE("a{sv}")); @@ -959,6 +958,7 @@ static void __wfd_manager_manage_iface_handler(const gchar *method_name, ret = WIFI_DIRECT_ERROR_NONE; return_parameters = g_variant_new("(iaa{sv})", ret, builder_peers); g_variant_builder_unref(builder_peers); + g_free(peers); goto done; } else if (!g_strcmp0(method_name, "GetConnectingPeer")) { -- 2.7.4