From: Jaroslav Kysela Date: Wed, 6 Mar 2019 19:01:26 +0000 (+0100) Subject: freesat bouquet parser: fix endless loop (double list insert), fixes #4851 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=726e6e65441a9802b6678b05e5f78d82c8cad5f5;p=thirdparty%2Ftvheadend.git freesat bouquet parser: fix endless loop (double list insert), fixes #4851 --- 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); } }