From 74d7cd9898ab68c33e0ee511304c77bb910a02cd Mon Sep 17 00:00:00 2001
From: MyungJoo Ham <myungjoo.ham@samsung.com>
Date: Mon, 28 Mar 2016 04:35:49 +0000
Subject: [PATCH] arm: Expand memory validation

Prevent SIGSEGV for write as well as read.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
---
 src/arm/Ginit.c | 10 +++++-----
 1 file 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);
     }