mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2025-02-02 12:52:53 +01:00
(unw_create_addr_space): Fix address-leak that triggered when function
was called with an unsupported "byte_order". Signed-off-by: David Mosberger-Tang <dmosberger@gmail.com>
This commit is contained in:
parent
bde67706ed
commit
09c8c7d0f3
1 changed files with 10 additions and 8 deletions
|
@ -33,14 +33,7 @@ unw_create_addr_space (unw_accessors_t *a, int byte_order)
|
|||
#ifdef UNW_LOCAL_ONLY
|
||||
return NULL;
|
||||
#else
|
||||
unw_addr_space_t as = malloc (sizeof (*as));
|
||||
|
||||
if (!as)
|
||||
return NULL;
|
||||
|
||||
memset (as, 0, sizeof (*as));
|
||||
|
||||
as->acc = *a;
|
||||
unw_addr_space_t as;
|
||||
|
||||
/*
|
||||
* IA-64 supports only big or little-endian, not weird stuff like
|
||||
|
@ -51,6 +44,15 @@ unw_create_addr_space (unw_accessors_t *a, int byte_order)
|
|||
&& byte_order != __BIG_ENDIAN)
|
||||
return NULL;
|
||||
|
||||
as = malloc (sizeof (*as));
|
||||
|
||||
if (!as)
|
||||
return NULL;
|
||||
|
||||
memset (as, 0, sizeof (*as));
|
||||
|
||||
as->acc = *a;
|
||||
|
||||
if (byte_order == 0)
|
||||
/* use host default: */
|
||||
as->big_endian = (__BYTE_ORDER == __BIG_ENDIAN);
|
||||
|
|
Loading…
Reference in a new issue