[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Libunwind-devel] [PATCH] coredump: simplify bad regnum checks a little
From: |
Mike Frysinger |
Subject: |
[Libunwind-devel] [PATCH] coredump: simplify bad regnum checks a little |
Date: |
Mon, 13 Feb 2017 21:32:54 -0500 |
We always want to reject negative regnums since we use it as an index,
so make it a common check at the top for all arches.
---
src/coredump/_UCD_access_reg_linux.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/src/coredump/_UCD_access_reg_linux.c
b/src/coredump/_UCD_access_reg_linux.c
index 4b5994fad438..208d8d27b658 100644
--- a/src/coredump/_UCD_access_reg_linux.c
+++ b/src/coredump/_UCD_access_reg_linux.c
@@ -39,17 +39,20 @@ _UCD_access_reg (unw_addr_space_t as,
return -UNW_EINVAL;
}
+ if (regnum < 0)
+ goto badreg;
+
#if defined(UNW_TARGET_AARCH64)
- if (regnum < 0 || regnum >= UNW_AARCH64_FPCR)
+ if (regnum >= UNW_AARCH64_FPCR)
goto badreg;
#elif defined(UNW_TARGET_ARM)
- if (regnum < 0 || regnum >= 16)
+ if (regnum >= 16)
goto badreg;
#elif defined(UNW_TARGET_SH)
- if (regnum < 0 || regnum > UNW_SH_PR)
+ if (regnum > UNW_SH_PR)
goto badreg;
#elif defined(UNW_TARGET_TILEGX)
- if (regnum < 0 || regnum > UNW_TILEGX_CFA)
+ if (regnum > UNW_TILEGX_CFA)
goto badreg;
#else
#if defined(UNW_TARGET_MIPS)
@@ -120,7 +123,7 @@ _UCD_access_reg (unw_addr_space_t as,
#error Port me
#endif
- if (regnum < 0 || regnum >= (unw_regnum_t)ARRAY_SIZE(remap_regs))
+ if (regnum >= (unw_regnum_t)ARRAY_SIZE(remap_regs))
goto badreg;
regnum = remap_regs[regnum];
--
2.11.0
- [Libunwind-devel] [PATCH] coredump: simplify bad regnum checks a little,
Mike Frysinger <=