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));
|
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,12 +6680,17 @@ long Cluster::ParseBlockGroup(
|
|||||||
return E_BUFFER_NOT_FULL;
|
return E_BUFFER_NOT_FULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
CreateBlock(0x20, payload_start, payload_size); //BlockGroup ID
|
||||||
m_pos = payload_stop;
|
m_pos = payload_stop;
|
||||||
|
|
||||||
return 0; //success
|
return 0; //success
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
long Cluster::GetEntry(long index, const mkvparser::BlockEntry*& pEntry) const
|
long Cluster::GetEntry(long index, const mkvparser::BlockEntry*& pEntry) const
|
||||||
|
Loading…
x
Reference in New Issue
Block a user