libwebm: block group must parse ref times too

Change-Id: Iadf7674dfaf311e04f2eea35fc396e2eaab18163
This commit is contained in:
matthewjheaney 2011-03-08 21:51:13 -05:00
parent 16b2cdaf57
commit 601f7903a3

View File

@ -6494,7 +6494,16 @@ long Cluster::ParseBlockGroup(
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
@ -6574,7 +6583,7 @@ long Cluster::ParseBlockGroup(
{
pos += size; //consume sub-part of block group
if (pos >= payload_stop)
if (pos > payload_stop)
return E_FILE_FORMAT_INVALID;
continue;
@ -6582,6 +6591,9 @@ long Cluster::ParseBlockGroup(
const long long block_stop = pos + size;
if (block_stop > payload_stop)
return E_FILE_FORMAT_INVALID;
//parse track number
if ((pos + 1) > avail)
@ -6668,11 +6680,16 @@ long Cluster::ParseBlockGroup(
return E_BUFFER_NOT_FULL;
}
CreateBlock(0x20, payload_start, payload_size); //BlockGroup ID
m_pos = payload_stop;
return 0; //success
pos = block_stop; //consume block-part of block group
assert(pos <= payload_stop);
}
assert(pos == payload_stop);
CreateBlock(0x20, payload_start, payload_size); //BlockGroup ID
m_pos = payload_stop;
return 0; //success
}