mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2025-03-11 19:00:07 +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
|
#ifdef UNW_LOCAL_ONLY
|
||||||
return NULL;
|
return NULL;
|
||||||
#else
|
#else
|
||||||
unw_addr_space_t as = malloc (sizeof (*as));
|
unw_addr_space_t as;
|
||||||
|
|
||||||
if (!as)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
memset (as, 0, sizeof (*as));
|
|
||||||
|
|
||||||
as->acc = *a;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* IA-64 supports only big or little-endian, not weird stuff like
|
* 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)
|
&& byte_order != __BIG_ENDIAN)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
as = malloc (sizeof (*as));
|
||||||
|
|
||||||
|
if (!as)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
memset (as, 0, sizeof (*as));
|
||||||
|
|
||||||
|
as->acc = *a;
|
||||||
|
|
||||||
if (byte_order == 0)
|
if (byte_order == 0)
|
||||||
/* use host default: */
|
/* use host default: */
|
||||||
as->big_endian = (__BYTE_ORDER == __BIG_ENDIAN);
|
as->big_endian = (__BYTE_ORDER == __BIG_ENDIAN);
|
||||||
|
|
Loading…
Add table
Reference in a new issue