summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Bloch <m.bloch@samsung.com>2021-05-19 13:11:51 +0200
committerMichal Bloch <m.bloch@samsung.com>2021-05-19 13:11:51 +0200
commit70a7d5a494e986dac2e83b8d8324853e8c3348bb (patch)
tree4a872640813feb5e0db027742011900439e71d02
parent741d9fd0f86609a35c09b820a2907e877266f6b4 (diff)
downloadlibunwind-tizen.tar.gz
libunwind-tizen.tar.bz2
libunwind-tizen.zip
Fix some minor issues found via static analysisHEADtizen
Change-Id: Id42676afafc1da2f8c37f315f0047c8d664475ea Signed-off-by: Michal Bloch <m.bloch@samsung.com>
-rw-r--r--include/tdep-arm/libunwind_i.h4
-rw-r--r--src/mi/Gdyn-remote.c9
2 files changed, 9 insertions, 4 deletions
diff --git a/include/tdep-arm/libunwind_i.h b/include/tdep-arm/libunwind_i.h
index 2602f41c..0084054b 100644
--- a/include/tdep-arm/libunwind_i.h
+++ b/include/tdep-arm/libunwind_i.h
@@ -50,8 +50,8 @@ typedef struct
{
uint32_t virtual_address;
int32_t frame_type : 3; /* unw_tdep_frame_type_t classification */
- int32_t last_frame : 1; /* non-zero if last frame in chain */
- int32_t cfa_reg_sp : 1; /* cfa dwarf base register is sp vs. r7 */
+ uint32_t last_frame : 1; /* non-zero if last frame in chain */
+ uint32_t cfa_reg_sp : 1; /* cfa dwarf base register is sp vs. r7 */
int32_t cfa_reg_offset : 30; /* cfa is at this offset from base register value */
int32_t r7_cfa_offset : 30; /* r7 saved at this offset from cfa (-1 = not saved) */
int32_t lr_cfa_offset : 30; /* lr saved at this offset from cfa (-1 = not saved) */
diff --git a/src/mi/Gdyn-remote.c b/src/mi/Gdyn-remote.c
index 40a5ad8b..702c265a 100644
--- a/src/mi/Gdyn-remote.c
+++ b/src/mi/Gdyn-remote.c
@@ -228,7 +228,7 @@ unwi_dyn_remote_find_proc_info (unw_addr_space_t as, unw_word_t ip,
if (fetchw (as, a, &addr, &gen1, arg) < 0
|| fetchw (as, a, &addr, &next_addr, arg) < 0)
- return ret;
+ goto fail;
for (addr = next_addr; addr != 0; addr = next_addr)
{
@@ -245,6 +245,10 @@ unwi_dyn_remote_find_proc_info (unw_addr_space_t as, unw_word_t ip,
{
if (!di)
di = calloc (1, sizeof (*di));
+ if (!di) {
+ ret = -UNW_ENOMEM;
+ goto fail;
+ }
di->start_ip = start_ip;
di->end_ip = end_ip;
@@ -275,10 +279,11 @@ unwi_dyn_remote_find_proc_info (unw_addr_space_t as, unw_word_t ip,
recheck:
addr = dyn_list_addr;
if (fetchw (as, a, &addr, &gen2, arg) < 0)
- return ret;
+ goto fail;
}
while (gen1 != gen2);
+fail:
if (ret < 0 && di)
free (di);