mirror of
https://github.com/ip7z/7zip.git
synced 2026-01-17 05:39:58 +01:00
Merge 9420d7d950 into e5431fa6f5
This commit is contained in:
commit
2422263469
18
C/XzIn.c
18
C/XzIn.c
|
|
@ -118,19 +118,35 @@ static SRes Xz_ReadIndex2(CXzStream *p, const Byte *buf, size_t size, ISzAllocPt
|
|||
p->blocks = (CXzBlockSizes *)ISzAlloc_Alloc(alloc, sizeof(CXzBlockSizes) * numBlocks);
|
||||
if (!p->blocks)
|
||||
return SZ_ERROR_MEM;
|
||||
|
||||
for (i = 0; i < numBlocks; i++)
|
||||
{
|
||||
CXzBlockSizes *block = &p->blocks[i];
|
||||
READ_VARINT_AND_CHECK(buf, pos, size, &block->totalSize)
|
||||
READ_VARINT_AND_CHECK(buf, pos, size, &block->unpackSize)
|
||||
if (block->totalSize == 0)
|
||||
{
|
||||
Xz_Free(p, alloc);
|
||||
return SZ_ERROR_ARCHIVE;
|
||||
}
|
||||
}
|
||||
}
|
||||
while ((pos & 3) != 0)
|
||||
{
|
||||
if (buf[pos++] != 0)
|
||||
{
|
||||
Xz_Free(p, alloc);
|
||||
return SZ_ERROR_ARCHIVE;
|
||||
return (pos == size) ? SZ_OK : SZ_ERROR_ARCHIVE;
|
||||
}
|
||||
}
|
||||
|
||||
if (pos != size)
|
||||
{
|
||||
Xz_Free(p, alloc);
|
||||
return SZ_ERROR_ARCHIVE;
|
||||
}
|
||||
|
||||
return SZ_OK;
|
||||
}
|
||||
|
||||
static SRes Xz_ReadIndex(CXzStream *p, ILookInStreamPtr stream, UInt64 indexSize, ISzAllocPtr alloc)
|
||||
|
|
|
|||
Loading…
Reference in a new issue