|
@@ -57,7 +57,11 @@ static int dvdsub_parse(AVCodecParserContext *s, |
|
|
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); |
|
|
av_freep(&pc->packet); |
|
|
av_freep(&pc->packet); |
|
|
pc->packet = av_malloc(pc->packet_len); |
|
|
|
|
|
|
|
|
if ((unsigned)pc->packet_len > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE) { |
|
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "packet length %d is invalid\n", pc->packet_len); |
|
|
|
|
|
return buf_size; |
|
|
|
|
|
} |
|
|
|
|
|
pc->packet = av_malloc(pc->packet_len + AV_INPUT_BUFFER_PADDING_SIZE); |
|
|
} |
|
|
} |
|
|
if (pc->packet) { |
|
|
if (pc->packet) { |
|
|
if (pc->packet_index + buf_size <= pc->packet_len) { |
|
|
if (pc->packet_index + buf_size <= pc->packet_len) { |
|
|