summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetri Hintukainen <phintuka@users.sourceforge.net>2012-04-11 13:43:50 +0300
committerPetri Hintukainen <phintuka@users.sourceforge.net>2012-04-11 13:43:50 +0300
commit02313d506f360392a6e221a31a267f0aa79c0dfb (patch)
tree18203bba63f81e972629ae6e7129e8cd263fa539
parentb17ae3df4726af06b97173d0fac3801621765b0d (diff)
downloadxine-lib-02313d506f360392a6e221a31a267f0aa79c0dfb.tar.gz
xine-lib-02313d506f360392a6e221a31a267f0aa79c0dfb.tar.bz2
Check read() return value
-rw-r--r--src/input/input_dvb.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/input/input_dvb.c b/src/input/input_dvb.c
index 0ae209eca..c7ad10e27 100644
--- a/src/input/input_dvb.c
+++ b/src/input/input_dvb.c
@@ -1455,9 +1455,17 @@ static void load_epg_data(dvb_input_plugin_t *this)
return;
}
n = read(this->tuner->fd_pidfilter[EITFILTER], eit, 3);
+ if (n != 3) {
+ xprintf(this->stream->xine,XINE_VERBOSITY_LOG,"Error reading EPG section length\n");
+ break;
+ }
/*table_id =*/ getbits(eit, 0, 8);
section_len = (unsigned int)getbits(eit, 12, 12);
n = read(this->tuner->fd_pidfilter[EITFILTER], eit + 3, section_len);
+ if (n != section_len) {
+ xprintf(this->stream->xine,XINE_VERBOSITY_LOG,"Error reading EPG section data\n");
+ break;
+ }
service_id = (unsigned int)getbits(eit, 24, 16);