Compare commits

...

2 Commits

Author SHA1 Message Date
matthewjheaney
365a39b5ec libwebm: set version to v1.0.0.19
Change-Id: I5e88dce1c52bc18bdab2063111830b5fbd0faafe
2011-03-09 11:04:21 -05:00
matthewjheaney
601f7903a3 libwebm: block group must parse ref times too
Change-Id: Iadf7674dfaf311e04f2eea35fc396e2eaab18163
2011-03-08 21:51:13 -05:00

View File

@@ -21,7 +21,7 @@ void mkvparser::GetVersion(int& major, int& minor, int& build, int& revision)
major = 1; major = 1;
minor = 0; minor = 0;
build = 0; build = 0;
revision = 18; revision = 19;
} }
long long mkvparser::ReadUInt(IMkvReader* pReader, long long pos, long& len) long long mkvparser::ReadUInt(IMkvReader* pReader, long long pos, long& len)
@@ -6494,7 +6494,16 @@ long Cluster::ParseBlockGroup(
assert((total < 0) || (avail <= total)); assert((total < 0) || (avail <= total));
for (;;) if ((total >= 0) && (payload_stop > total))
return E_FILE_FORMAT_INVALID;
if (payload_stop > avail)
{
len = static_cast<long>(payload_size);
return E_BUFFER_NOT_FULL;
}
while (pos < payload_stop)
{ {
//parse sub-block element ID //parse sub-block element ID
@@ -6574,7 +6583,7 @@ long Cluster::ParseBlockGroup(
{ {
pos += size; //consume sub-part of block group pos += size; //consume sub-part of block group
if (pos >= payload_stop) if (pos > payload_stop)
return E_FILE_FORMAT_INVALID; return E_FILE_FORMAT_INVALID;
continue; continue;
@@ -6582,6 +6591,9 @@ long Cluster::ParseBlockGroup(
const long long block_stop = pos + size; const long long block_stop = pos + size;
if (block_stop > payload_stop)
return E_FILE_FORMAT_INVALID;
//parse track number //parse track number
if ((pos + 1) > avail) if ((pos + 1) > avail)
@@ -6668,11 +6680,16 @@ long Cluster::ParseBlockGroup(
return E_BUFFER_NOT_FULL; return E_BUFFER_NOT_FULL;
} }
CreateBlock(0x20, payload_start, payload_size); //BlockGroup ID pos = block_stop; //consume block-part of block group
m_pos = payload_stop; assert(pos <= payload_stop);
return 0; //success
} }
assert(pos == payload_stop);
CreateBlock(0x20, payload_start, payload_size); //BlockGroup ID
m_pos = payload_stop;
return 0; //success
} }