matroskadec: check element size against stream limit in ebml_parse_elem()

Fixes Ticket1195

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2012-08-04 02:27:51 +02:00
parent d673a3f4a9
commit 668c873bed
1 changed files with 4 additions and 1 deletions

View File

@ -945,7 +945,10 @@ static int ebml_parse_elem(MatroskaDemuxContext *matroska,
return ebml_parse_nest(matroska, syntax->def.n, data);
case EBML_PASS: return ebml_parse_id(matroska, syntax->def.n, id, data);
case EBML_STOP: return 1;
default: return avio_skip(pb,length)<0 ? AVERROR(EIO) : 0;
default:
if(ffio_limit(pb, length) != length)
return AVERROR(EIO);
return avio_skip(pb,length)<0 ? AVERROR(EIO) : 0;
}
if (res == AVERROR_INVALIDDATA)
av_log(matroska->ctx, AV_LOG_ERROR, "Invalid element\n");