diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2002-04-06 14:02:41 +0200 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2002-04-06 14:02:41 +0200 |
commit | 367b3f8c7d128f6e7f48d2304440f08577ab0024 (patch) | |
tree | 955a87aeeff122a3fc8489d3ad83456004220699 | |
parent | d00b5d8828ca997e0cfbced124de645594565837 (diff) | |
download | vdr-367b3f8c7d128f6e7f48d2304440f08577ab0024.tar.gz vdr-367b3f8c7d128f6e7f48d2304440f08577ab0024.tar.bz2 |
Fixed a possible hangup when reading a broken epg.data file
-rw-r--r-- | CONTRIBUTORS | 1 | ||||
-rw-r--r-- | HISTORY | 2 | ||||
-rw-r--r-- | eit.c | 10 |
3 files changed, 8 insertions, 5 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index b97cbcf2..e5157e04 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -88,6 +88,7 @@ Benjamin Reichardt <reichard@math.uni-goettingen.de> Henning Holtschneider <hh@holtschneider.com> for patching 'runvdr' to check whether the driver is already loaded for reporting a bug in parsing group separators in channels.conf + for pointing out a possible hangup when reading a broken epg.data file Paulo Lopes <pmml@netvita.pt> for translating OSD texts to the Portugese language @@ -1184,3 +1184,5 @@ Video Disk Recorder Revision History (thanks to Thilo Wunderlich for reporting this one). - Now the EPG scan skips channels that have their 'Ca' parameter explicitly set to an other DVB card (suggested by Sergei Haller). +- Fixed a possible hangup when reading a broken epg.data file (thanks to Henning + Holtschneider for pointing this one out). @@ -16,7 +16,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: eit.c 1.43 2002/04/06 11:42:47 kls Exp $ + * $Id: eit.c 1.44 2002/04/06 13:58:59 kls Exp $ ***************************************************************************/ #include "eit.h" @@ -390,12 +390,12 @@ bool cEventInfo::Read(FILE *f, cSchedule *Schedule) case 'e': pEvent = NULL; break; case 'c': // to keep things simple we react on 'c' here - return false; + return true; default: esyslog(LOG_ERR, "ERROR: unexpected tag while reading EPG data: %s", s); return false; } } - return true; + esyslog(LOG_ERR, "ERROR: unexpected end of file while reading EPG data"); } return false; } @@ -754,8 +754,8 @@ bool cSchedule::Read(FILE *f, cSchedules *Schedules) if (1 == sscanf(s + 1, "%u", &uServiceID)) { cSchedule *p = (cSchedule *)Schedules->SetCurrentServiceID(uServiceID); if (p) { - while (cEventInfo::Read(f, p)) - ; // loop stops after having read the closing 'c' + if (!cEventInfo::Read(f, p)) + return false; } } } |