From 45e1c12bfd90fef4c6c75b8431689a3a98bb1a09 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 aa15ae946..257d5f1db 100644 --- a/src/input/mpegts/dvb_psi.c +++ b/src/input/mpegts/dvb_psi.c @@ -717,13 +717,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