From 726e6e65441a9802b6678b05e5f78d82c8cad5f5 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 6 Mar 2019 20:01:26 +0100 Subject: [PATCH] freesat bouquet parser: fix endless loop (double list insert), fixes #4851 --- src/input/mpegts/dvb_psi.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/input/mpegts/dvb_psi.c b/src/input/mpegts/dvb_psi.c index aa408489f..8a87d383b 100644 --- a/src/input/mpegts/dvb_psi.c +++ b/src/input/mpegts/dvb_psi.c @@ -757,13 +757,17 @@ dvb_freesat_completed bs->fallback = fs; continue; } + /* already assigned? skip it */ + if (TAILQ_SAFE_ENTRY(fs, region_link)) + continue; LIST_FOREACH(fr, &bi->fregions, link) if (fr->regionid == fs->regionid) break; - if (!fr) + if (!fr) { tvhtrace(mt->mt_subsys, "%s: cannot find freesat region id %u", mt->mt_name, fs->regionid); - else - TAILQ_INSERT_TAIL(&fr->services, fs, region_link); + continue; + } + TAILQ_INSERT_TAIL(&fr->services, fs, region_link); } } -- 2.47.2