id3v2: prevent unsigned integer overflow in ff_id3v2_parse()
authorStefano Sabatini <stefano.sabatini-lala@poste.it>
Tue, 17 May 2011 22:43:25 +0000 (00:43 +0200)
committerStefano Sabatini <stefano.sabatini-lala@poste.it>
Wed, 18 May 2011 08:35:52 +0000 (10:35 +0200)
In ff_id3v2_parse(), prevent unsigned integer overflow if data length
indicator is skipped and tlen is < 4.

Fix crash decoding file Allaby_cut.mp3, fix trac issue #182.

libavformat/id3v2.c

index e1958bd..3640b11 100644 (file)
@@ -255,6 +255,8 @@ static void ff_id3v2_parse(AVFormatContext *s, int len, uint8_t version, uint8_t
         next = avio_tell(s->pb) + tlen;
 
         if (tflags & ID3v2_FLAG_DATALEN) {
+            if (tlen < 4)
+                break;
             avio_rb32(s->pb);
             tlen -= 4;
         }