avcodec/dvdsub_parser: Check buf_size before reading 32bit packet size
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 1 Aug 2014 23:15:37 +0000 (01:15 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 1 Aug 2014 23:27:03 +0000 (01:27 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 81c1657a593b1c0f8e46fca00ead1d30ee1cd418)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/dvdsub_parser.c

index 9a6457e..07ed4f7 100644 (file)
@@ -45,8 +45,9 @@ static int dvdsub_parse(AVCodecParserContext *s,
     DVDSubParseContext *pc = s->priv_data;
 
     if (pc->packet_index == 0) {
-        if (buf_size < 2)
+        if (buf_size < 2 || AV_RB16(buf) && buf_size < 6) {
             return buf_size;
+        }
         pc->packet_len = AV_RB16(buf);
         if (pc->packet_len == 0) /* HD-DVD subpicture packet */
             pc->packet_len = AV_RB32(buf+2);