Browse Source

avcodec/dvdsub_parser: Check buf_size before reading 32bit packet size

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n2.4
Michael Niedermayer 11 years ago
parent
commit
81c1657a59
1 changed files with 2 additions and 1 deletions
  1. +2
    -1
      libavcodec/dvdsub_parser.c

+ 2
- 1
libavcodec/dvdsub_parser.c View File

@@ -45,8 +45,9 @@ static int dvdsub_parse(AVCodecParserContext *s,
DVDSubParseContext *pc = s->priv_data; DVDSubParseContext *pc = s->priv_data;


if (pc->packet_index == 0) { if (pc->packet_index == 0) {
if (buf_size < 2)
if (buf_size < 2 || AV_RB16(buf) && buf_size < 6) {
return buf_size; return buf_size;
}
pc->packet_len = AV_RB16(buf); pc->packet_len = AV_RB16(buf);
if (pc->packet_len == 0) /* HD-DVD subpicture packet */ if (pc->packet_len == 0) /* HD-DVD subpicture packet */
pc->packet_len = AV_RB32(buf+2); pc->packet_len = AV_RB32(buf+2);


Loading…
Cancel
Save