summaryrefslogtreecommitdiff
path: root/libavformat/mpc8.c
diff options
context:
space:
mode:
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>2009-09-30 13:35:13 +0000
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>2009-09-30 13:35:13 +0000
commit5dd76bd741022ee87c8a1945e4ef0d97467f70e3 (patch)
treea44562ad6f479a2f630782efbdf490cc72fc9afe /libavformat/mpc8.c
parent58f873dded3f43755fdd396145f246c91124f9eb (diff)
Return an error when the parsed mpc chunk size is negative, otherwise we
might end up in an endless loop where the same chunk is parsed over and over. Fixes a hang near the end for http://samples.mplayerhq.hu/A-codecs/musepack/sv8/sv8-tags.mpc Originally committed as revision 20099 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/mpc8.c')
-rw-r--r--libavformat/mpc8.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/libavformat/mpc8.c b/libavformat/mpc8.c
index 51817f1439..85cbb41f83 100644
--- a/libavformat/mpc8.c
+++ b/libavformat/mpc8.c
@@ -250,6 +250,8 @@ static int mpc8_read_packet(AVFormatContext *s, AVPacket *pkt)
while(!url_feof(s->pb)){
pos = url_ftell(s->pb);
mpc8_get_chunk_header(s->pb, &tag, &size);
+ if (size < 0)
+ return -1;
if(tag == TAG_AUDIOPACKET){
if(av_get_packet(s->pb, pkt, size) < 0)
return AVERROR(ENOMEM);