diff mpc8.c @ 5241:da61aef912cb libavformat

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
author reimar
date Wed, 30 Sep 2009 13:35:13 +0000
parents 2b52ec1e8619
children 536e5527c1e0
line wrap: on
line diff
--- a/mpc8.c	Wed Sep 30 09:46:48 2009 +0000
+++ b/mpc8.c	Wed Sep 30 13:35:13 2009 +0000
@@ -250,6 +250,8 @@
     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);