From f3f456c0d17b7f8e38badf60f986f53b5acfa05b Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Mon, 13 Feb 2017 21:32:54 -0500 Subject: [PATCH] coredump: simplify bad regnum checks a little 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 4b5994fa..208d8d27 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];