libunwind-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]