diff options
author | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2009-07-03 11:18:07 +0000 |
---|---|---|
committer | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2009-07-03 11:18:07 +0000 |
commit | 68a10b40bcba94199f45a975be98d2e12fdcdb75 (patch) | |
tree | 5bd9bfdc005ee11e0e8d972ff1c57f01e084572c /libavformat | |
parent | 0410ee8f868ae307517f8554f2aa3a11b511dac5 (diff) | |
download | ffmpeg-68a10b40bcba94199f45a975be98d2e12fdcdb75.tar.gz |
Avoid divisions by 0 in the ASF demuxer if packet_size is not valid.
Originally committed as revision 19330 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/asfdec.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c index c294ff58b8..4869e55302 100644 --- a/libavformat/asfdec.c +++ b/libavformat/asfdec.c @@ -595,6 +595,9 @@ static int ff_asf_get_packet(AVFormatContext *s, ByteIOContext *pb) int rsize = 8; int c, d, e, off; + // if we do not know packet size, allow skipping up to 32 kB + off= 32768; + if (s->packet_size > 0) off= (url_ftell(pb) - s->data_offset) % s->packet_size + 3; c=d=e=-1; @@ -989,6 +992,7 @@ static int64_t asf_read_pts(AVFormatContext *s, int stream_index, int64_t *ppos, start_pos[i]= pos; } + if (s->packet_size > 0) pos= (pos+s->packet_size-1-s->data_offset)/s->packet_size*s->packet_size+ s->data_offset; *ppos= pos; url_fseek(s->pb, pos, SEEK_SET); |