mirror of
https://github.com/ianlancetaylor/libbacktrace.git
synced 2026-03-21 17:59:07 +08:00
[libbacktrace] fix up broken test
zstdtest has some inline data where some testcases lack the uncompressed length field. Thus it computes that but still ends up allocating memory for the uncompressed buffer based on that (zero) length. Oops. Causes memory corruption if the allocator returns non-NULL. libbacktrace/ * zstdtest.c (test_samples): Properly compute the allocation size for the uncompressed data.
This commit is contained in:
committed by
Ian Lance Taylor
parent
c1c86fa2f0
commit
9ae4f4ae44
10
zstdtest.c
10
zstdtest.c
@@ -197,7 +197,11 @@ test_samples (struct backtrace_state *state)
|
||||
unsigned char *uncompressed;
|
||||
size_t uncompressed_len;
|
||||
|
||||
uncompressed = (unsigned char *) malloc (tests[i].uncompressed_len);
|
||||
uncompressed_len = tests[i].uncompressed_len;
|
||||
if (uncompressed_len == 0)
|
||||
uncompressed_len = strlen (tests[i].uncompressed);
|
||||
|
||||
uncompressed = (unsigned char *) malloc (uncompressed_len);
|
||||
if (uncompressed == NULL)
|
||||
{
|
||||
perror ("malloc");
|
||||
@@ -206,10 +210,6 @@ test_samples (struct backtrace_state *state)
|
||||
continue;
|
||||
}
|
||||
|
||||
uncompressed_len = tests[i].uncompressed_len;
|
||||
if (uncompressed_len == 0)
|
||||
uncompressed_len = strlen (tests[i].uncompressed);
|
||||
|
||||
if (!backtrace_uncompress_zstd (state,
|
||||
((const unsigned char *)
|
||||
tests[i].compressed),
|
||||
|
||||
Reference in New Issue
Block a user