In case supplicant_dbus_method_call() function returns error, 'data'
memory is not freed.
---
 tools/supplicant.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tools/supplicant.c b/tools/supplicant.c
index e2e6fea..a5b68ef
--- a/tools/supplicant.c
+++ b/tools/supplicant.c
@@ -1795,6 +1795,7 @@ int supplicant_interface_create(const char *ifname, const 
char *driver,
                                                        void *user_data)
 {
        struct interface_create_data *data;
+       int ret;
 
        if (!ifname)
                return -EINVAL;
@@ -1811,11 +1812,15 @@ int supplicant_interface_create(const char *ifname, 
const char *driver,
        data->callback = callback;
        data->user_data = user_data;

-       return supplicant_dbus_method_call(SUPPLICANT_PATH,
+       ret = supplicant_dbus_method_call(SUPPLICANT_PATH,
                                                SUPPLICANT_INTERFACE,
                                                "GetInterface",
                                                interface_get_params,
                                                interface_get_result, data);
+       if (ret < 0)
+               dbus_free(data);
+
+       return ret;
 }
 
 int supplicant_interface_remove(struct supplicant_interface *interface,
-- 
1.7.9.5

_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to