Fix the memory leak
[platform/core/connectivity/bluetooth-frwk.git] / bt-oal / bluez_hal / src / bt-hal-event-receiver.c
index a6ff12f..bc9386e 100644 (file)
@@ -1041,7 +1041,7 @@ static gboolean __bt_hal_event_manager(gpointer data)
 
                if (obj_path == NULL) {
                        ERR("obj_path is NULL");
-                       return FALSE;
+                       goto done;
                }
 
                if (strcasecmp(obj_path, BT_HAL_BLUEZ_HCI_PATH) == 0) {
@@ -1078,20 +1078,20 @@ static gboolean __bt_hal_event_manager(gpointer data)
 
                if (g_strcmp0(g_variant_get_type_string(param->parameters), "(sss)") != 0) {
                        ERR("Invalid variant format");
-                       return FALSE;
+                       goto done;
                }
 
                /* TODO: Handle Name Owener changed Signal */
                if (__bt_hal_get_owner_info(param->parameters, &name, &previous, &current)) {
                        ERR("Fail to get the owner info");
-                       return FALSE;
+                       goto done;
                }
 
                if (*current != '\0')
-                       return FALSE;
+                       goto done;
 
                if (name == NULL)
-                       return FALSE;
+                       goto done;
 
                if (strcasecmp(name, BT_HAL_BLUEZ_NAME) == 0) {
                        struct hal_ev_adapter_state_changed ev;
@@ -1148,12 +1148,14 @@ static gboolean __bt_hal_event_manager(gpointer data)
                __bt_hal_handle_gatt_service_event(param->parameters, param->signal_name);
        }
 
+done:
        /* Free data */
        g_free(param->sender_name);
        g_free(param->object_path);
        g_free(param->interface_name);
        g_free(param->signal_name);
        g_variant_unref(param->parameters);
+       g_free(param);
 
        return FALSE;
 }
@@ -1198,10 +1200,6 @@ static void __bt_hal_handle_headset_events(GVariant *msg, const char *member, co
 
                address = g_malloc0(BT_HAL_ADDRESS_STRING_SIZE);
 
-               /* Fix : NULL_RETURNS */
-               if (address == NULL)
-                       return;
-
                _bt_hal_convert_device_path_to_address(path, address);
                __bt_hal_send_hf_audio_connection_state_event(property_flag, address);
                g_free(address);
@@ -1222,8 +1220,6 @@ static void __bt_hal_handle_headset_events(GVariant *msg, const char *member, co
                                DBG("Sco Disconnected");
                } else {
                        ERR("Not handled state - %s", state);
-                       g_free(state);
-                       return;
                }
                g_free(state);
        } else if (strcasecmp(property, "SpeakerGain") == 0) {
@@ -1248,8 +1244,7 @@ static void __bt_hal_handle_headset_events(GVariant *msg, const char *member, co
                g_free(address);
        }
 
-       if (property)
-               g_free(property);
+       g_free(property);
        g_variant_unref(value);
 }
 
@@ -1964,11 +1959,11 @@ static void __bt_hal_handle_device_specific_events(GVariant *msg, const char *me
                        const char *path)
 {
        char *address;
-       const char *property = NULL;
        if (path == NULL)
                return;
 
        if (strcasecmp(member, "PropertyChanged") == 0) {
+               char *property;
                g_variant_get(msg, "(s)", &property);
                if (property == NULL)
                        return;
@@ -2008,6 +2003,7 @@ static void __bt_hal_handle_device_specific_events(GVariant *msg, const char *me
                } else if (strcasecmp(property, "UUIDs") == 0) {
                        /* TODO */
                }
+               g_free(property);
        } else if (strcasecmp(member, "DeviceConnected") == 0) {
                unsigned char addr_type = 0;