Compare commits
2 Commits
libwebm-1.
...
libwebm-1.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
365a39b5ec | ||
|
|
601f7903a3 |
@@ -21,7 +21,7 @@ void mkvparser::GetVersion(int& major, int& minor, int& build, int& revision)
|
||||
major = 1;
|
||||
minor = 0;
|
||||
build = 0;
|
||||
revision = 18;
|
||||
revision = 19;
|
||||
}
|
||||
|
||||
long long mkvparser::ReadUInt(IMkvReader* pReader, long long pos, long& len)
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user