Commit aa5b13af authored by aurel's avatar aurel

matroskadec: fix type of the length field in ebml_read_master()

Also use the correct value for unknown size (instead of a truncated
and sign extended value).


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@23591 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent e373fbaf
...@@ -657,7 +657,7 @@ static int ebml_read_binary(ByteIOContext *pb, int length, EbmlBin *bin) ...@@ -657,7 +657,7 @@ static int ebml_read_binary(ByteIOContext *pb, int length, EbmlBin *bin)
* are supposed to be sub-elements which can be read separately. * are supposed to be sub-elements which can be read separately.
* 0 is success, < 0 is failure. * 0 is success, < 0 is failure.
*/ */
static int ebml_read_master(MatroskaDemuxContext *matroska, int length) static int ebml_read_master(MatroskaDemuxContext *matroska, uint64_t length)
{ {
ByteIOContext *pb = matroska->ctx->pb; ByteIOContext *pb = matroska->ctx->pb;
MatroskaLevel *level; MatroskaLevel *level;
...@@ -718,7 +718,7 @@ static int ebml_parse_id(MatroskaDemuxContext *matroska, EbmlSyntax *syntax, ...@@ -718,7 +718,7 @@ static int ebml_parse_id(MatroskaDemuxContext *matroska, EbmlSyntax *syntax,
break; break;
if (!syntax[i].id && id == MATROSKA_ID_CLUSTER && if (!syntax[i].id && id == MATROSKA_ID_CLUSTER &&
matroska->num_levels > 0 && matroska->num_levels > 0 &&
matroska->levels[matroska->num_levels-1].length == 0xffffffffffffffff) matroska->levels[matroska->num_levels-1].length == 0xffffffffffffff)
return 0; // we reached the end of an unknown size cluster return 0; // we reached the end of an unknown size cluster
if (!syntax[i].id && id != EBML_ID_VOID && id != EBML_ID_CRC32) if (!syntax[i].id && id != EBML_ID_VOID && id != EBML_ID_CRC32)
av_log(matroska->ctx, AV_LOG_INFO, "Unknown entry 0x%X\n", id); av_log(matroska->ctx, AV_LOG_INFO, "Unknown entry 0x%X\n", id);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment