diff --git a/src/ppc64/Ginit.c b/src/ppc64/Ginit.c index 07409610..3211cf4d 100644 --- a/src/ppc64/Ginit.c +++ b/src/ppc64/Ginit.c @@ -169,13 +169,11 @@ access_fpreg (unw_addr_space_t as, unw_regnum_t reg, unw_fpreg_t *val, ucontext_t *uc = arg; unw_fpreg_t *addr; - if ((reg - UNW_PPC64_F0) < 0) + /* Allow only 32 fregs and 32 vregs */ + if (!(((unsigned) (reg - UNW_PPC64_F0) < 32) + ||((unsigned) (reg - UNW_PPC64_V0) < 32))) goto badreg; - if ((unsigned) (reg - UNW_PPC64_V0) >= 32) - goto badreg; - - addr = uc_addr (uc, reg); if (!addr) goto badreg;