mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-29 16:54:35 +00:00
libbacktrace: skip all LZMA block header padding bytes (28824f2)
This commit is contained in:
parent
1f90cd473b
commit
49478ec3b3
@ -5586,6 +5586,7 @@ elf_uncompress_lzma_block (const unsigned char *compressed,
|
||||
uint64_t header_compressed_size;
|
||||
uint64_t header_uncompressed_size;
|
||||
unsigned char lzma2_properties;
|
||||
size_t crc_offset;
|
||||
uint32_t computed_crc;
|
||||
uint32_t stream_crc;
|
||||
size_t uncompressed_offset;
|
||||
@ -5689,20 +5690,21 @@ elf_uncompress_lzma_block (const unsigned char *compressed,
|
||||
/* The properties describe the dictionary size, but we don't care
|
||||
what that is. */
|
||||
|
||||
/* Block header padding. */
|
||||
if (unlikely (off + 4 > compressed_size))
|
||||
/* Skip to just before CRC, verifying zero bytes in between. */
|
||||
crc_offset = block_header_offset + block_header_size - 4;
|
||||
if (unlikely (crc_offset + 4 > compressed_size))
|
||||
{
|
||||
elf_uncompress_failed ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
off = (off + 3) &~ (size_t) 3;
|
||||
|
||||
if (unlikely (off + 4 > compressed_size))
|
||||
for (; off < crc_offset; off++)
|
||||
{
|
||||
if (compressed[off] != 0)
|
||||
{
|
||||
elf_uncompress_failed ();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Block header CRC. */
|
||||
computed_crc = elf_crc32 (0, compressed + block_header_offset,
|
||||
|
Loading…
Reference in New Issue
Block a user