libwebm: block group must parse ref times too
Change-Id: Iadf7674dfaf311e04f2eea35fc396e2eaab18163
This commit is contained in:
parent
16b2cdaf57
commit
601f7903a3
@ -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
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user