diff options
author | MyungJoo Ham <myungjoo.ham@samsung.com> | 2016-03-28 04:35:49 +0000 |
---|---|---|
committer | Dave Watson <davejwatson@fb.com> | 2017-08-15 10:33:48 -0700 |
commit | 74d7cd9898ab68c33e0ee511304c77bb910a02cd (patch) | |
tree | bc9a9d66f6157c7278978bd990b2aeae3bcc7083 | |
parent | 3b3a453a65867f39b4a2850d21955610f0fab649 (diff) | |
download | libunwind-74d7cd9898ab68c33e0ee511304c77bb910a02cd.tar.gz |
arm: Expand memory validation
Prevent SIGSEGV for write as well as read.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
-rw-r--r-- | src/arm/Ginit.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/arm/Ginit.c b/src/arm/Ginit.c index 1ed3dbfc..a23124d7 100644 --- a/src/arm/Ginit.c +++ b/src/arm/Ginit.c @@ -126,6 +126,11 @@ static int access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, void *arg) { + /* validate address */ + const struct cursor *c = (const struct cursor *) arg; + if (c && validate_mem(addr)) + return -1; + if (write) { Debug (16, "mem[%x] <- %x\n", addr, *val); @@ -133,11 +138,6 @@ access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, } else { - /* validate address */ - const struct cursor *c = (const struct cursor *) arg; - if (c && validate_mem(addr)) - return -1; - *val = *(unw_word_t *) addr; Debug (16, "mem[%x] -> %x\n", addr, *val); } |