[vlc-devel] [PATCH 1/2] libvlc: deactivate the playlist before destroying the preparser
Thomas Guillem
thomas at gllm.fr
Tue Aug 23 09:45:21 CEST 2016
This fixes a use-after-free when the art fetcher was triggering a callback
registered by the playlist (that was destroyed).
This partially reverts 17bd88b915188d1659ec46c07aa1efd3745071b5 that is a
revert of 9e9b227443831d8c9798b78122a2194053f2b2f1.
Fixes #17087
---
src/libvlc.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/libvlc.c b/src/libvlc.c
index 48c2b8c..8bd736c 100644
--- a/src/libvlc.c
+++ b/src/libvlc.c
@@ -508,6 +508,14 @@ void libvlc_InternalCleanup( libvlc_int_t *p_libvlc )
{
libvlc_priv_t *priv = libvlc_priv (p_libvlc);
+ /* Deactivate the playlist before deleting the preparser in order to
+ * prevent new preparser requests from the playlist */
+ if (priv->playlist)
+ playlist_Deactivate(priv->playlist);
+
+ if (priv->parser != NULL)
+ playlist_preparser_Delete(priv->parser);
+
/* Ask the interfaces to stop and destroy them */
msg_Dbg( p_libvlc, "removing all interfaces" );
libvlc_Quit( p_libvlc );
@@ -536,9 +544,6 @@ void libvlc_InternalCleanup( libvlc_int_t *p_libvlc )
}
#endif
- if (priv->parser != NULL)
- playlist_preparser_Delete(priv->parser);
-
vlc_DeinitActions( p_libvlc, priv->actions );
/* Save the configuration */
--
2.8.1
More information about the vlc-devel
mailing list