Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>2009-09-30 17:35:13 +0400
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>2009-09-30 17:35:13 +0400
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);