Fixed a possible hangup when reading a broken epg.data file

This commit is contained in:
Klaus Schmidinger 2002-04-06 14:02:41 +02:00
parent d00b5d8828
commit 367b3f8c7d
3 changed files with 8 additions and 5 deletions

View File

@ -88,6 +88,7 @@ Benjamin Reichardt <reichard@math.uni-goettingen.de>
Henning Holtschneider <hh@holtschneider.com> Henning Holtschneider <hh@holtschneider.com>
for patching 'runvdr' to check whether the driver is already loaded for patching 'runvdr' to check whether the driver is already loaded
for reporting a bug in parsing group separators in channels.conf 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> Paulo Lopes <pmml@netvita.pt>
for translating OSD texts to the Portugese language for translating OSD texts to the Portugese language

View File

@ -1184,3 +1184,5 @@ Video Disk Recorder Revision History
(thanks to Thilo Wunderlich for reporting this one). (thanks to Thilo Wunderlich for reporting this one).
- Now the EPG scan skips channels that have their 'Ca' parameter explicitly set - Now the EPG scan skips channels that have their 'Ca' parameter explicitly set
to an other DVB card (suggested by Sergei Haller). 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).

10
eit.c
View File

@ -16,7 +16,7 @@
* the Free Software Foundation; either version 2 of the License, or * * the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. * * (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" #include "eit.h"
@ -390,12 +390,12 @@ bool cEventInfo::Read(FILE *f, cSchedule *Schedule)
case 'e': pEvent = NULL; case 'e': pEvent = NULL;
break; break;
case 'c': // to keep things simple we react on 'c' here 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); default: esyslog(LOG_ERR, "ERROR: unexpected tag while reading EPG data: %s", s);
return false; return false;
} }
} }
return true; esyslog(LOG_ERR, "ERROR: unexpected end of file while reading EPG data");
} }
return false; return false;
} }
@ -754,8 +754,8 @@ bool cSchedule::Read(FILE *f, cSchedules *Schedules)
if (1 == sscanf(s + 1, "%u", &uServiceID)) { if (1 == sscanf(s + 1, "%u", &uServiceID)) {
cSchedule *p = (cSchedule *)Schedules->SetCurrentServiceID(uServiceID); cSchedule *p = (cSchedule *)Schedules->SetCurrentServiceID(uServiceID);
if (p) { if (p) {
while (cEventInfo::Read(f, p)) if (!cEventInfo::Read(f, p))
; // loop stops after having read the closing 'c' return false;
} }
} }
} }