From 9d6a56a0d3e793fa89440cbb4ead87e4f693bc14 Mon Sep 17 00:00:00 2001 From: Adam Sutton Date: Wed, 25 Sep 2013 20:49:05 +0100 Subject: [PATCH] mpegts: fix possible list corruption when unsubscribing from mux --- src/input/mpegts/mpegts_mux.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/input/mpegts/mpegts_mux.c b/src/input/mpegts/mpegts_mux.c index 1853d433..2424d06a 100644 --- a/src/input/mpegts/mpegts_mux.c +++ b/src/input/mpegts/mpegts_mux.c @@ -690,12 +690,17 @@ mpegts_mux_unsubscribe_by_name ( mpegts_mux_t *mm, const char *name ) { mpegts_mux_instance_t *mmi; - th_subscription_t *s; + th_subscription_t *s, *n; - LIST_FOREACH(mmi, &mm->mm_instances, mmi_mux_link) - LIST_FOREACH(s, &mmi->mmi_subs, ths_mmi_link) + LIST_FOREACH(mmi, &mm->mm_instances, mmi_mux_link) { + s = LIST_FIRST(&mmi->mmi_subs); + while (s) { + n = LIST_NEXT(s, ths_mmi_link); if (!strcmp(s->ths_title, name)) subscription_unsubscribe(s); + s = n; + } + } } /* **************************************************************************