diff options
author | Matthias Hopf <mhopf@suse.de> | 2008-12-31 20:09:01 +0100 |
---|---|---|
committer | Matthias Hopf <mhopf@suse.de> | 2008-12-31 20:09:01 +0100 |
commit | 4dd616ec236a414c96df5ffeecbb76e077c16571 (patch) | |
tree | 9588dd7f9fc640b45ff0bcb616c214bf3128bf89 | |
parent | 2e77ffc2c7a9498d5c6180871c460a75e5611ac3 (diff) | |
download | xine-lib-4dd616ec236a414c96df5ffeecbb76e077c16571.tar.gz xine-lib-4dd616ec236a414c96df5ffeecbb76e077c16571.tar.bz2 |
handle read errors/insufficient data when forwarding asf data
do not forward data if there is not enough
-rw-r--r-- | src/demuxers/demux_asf.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/demuxers/demux_asf.c b/src/demuxers/demux_asf.c index 9d4191633..d79782026 100644 --- a/src/demuxers/demux_asf.c +++ b/src/demuxers/demux_asf.c @@ -738,7 +738,10 @@ static void asf_send_buffer_nodefrag (demux_asf_t *this, asf_demux_stream_t *str bufsize = stream->fifo->buffer_pool_buf_size; buf = stream->fifo->buffer_pool_alloc (stream->fifo); - this->input->read (this->input, buf->content, bufsize); + if (this->input->read (this->input, buf->content, bufsize) != bufsize) { + xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_asf: input buffer starved\n"); + return ; + } lprintf ("data: %d %d %d %d\n", buf->content[0], buf->content[1], buf->content[2], buf->content[3]); @@ -817,7 +820,10 @@ static void asf_send_buffer_defrag (demux_asf_t *this, asf_demux_stream_t *strea if( stream->frag_offset + frag_len > DEFRAG_BUFSIZE ) { xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_asf: buffer overflow on defrag!\n"); } else { - this->input->read (this->input, &stream->buffer[stream->frag_offset], frag_len); + if (this->input->read (this->input, &stream->buffer[stream->frag_offset], frag_len) != frag_len) { + xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_asf: input buffer starved\n"); + return ; + } stream->frag_offset += frag_len; } |