android/AVRCP: Fix possible invalid read
Like in A2DP case it is not safe to call g_slist_remove within
g_slist_free_full callback.
diff --git a/android/avrcp.c b/android/avrcp.c
index f61ed34..7ee5a8a 100644
--- a/android/avrcp.c
+++ b/android/avrcp.c
@@ -140,10 +140,15 @@
g_io_channel_unref(dev->io);
}
- devices = g_slist_remove(devices, dev);
g_free(dev);
}
+static void avrcp_device_remove(struct avrcp_device *dev)
+{
+ devices = g_slist_remove(devices, dev);
+ avrcp_device_free(dev);
+}
+
static struct avrcp_device *avrcp_device_new(const bdaddr_t *dst)
{
struct avrcp_device *dev;
@@ -171,7 +176,7 @@
dev->session = NULL;
- avrcp_device_free(dev);
+ avrcp_device_remove(dev);
}
static void connect_cb(GIOChannel *chan, GError *err, gpointer user_data)
@@ -362,5 +367,5 @@
return;
}
- avrcp_device_free(dev);
+ avrcp_device_remove(dev);
}