From dd3e38f00371ed71a0e8d17020030a2ad9c426a9 Mon Sep 17 00:00:00 2001
From: an7s <an7s@git.zephyr-software.com>
Date: Wed, 6 Jan 2016 18:18:26 +0000
Subject: [PATCH] Reuse previous outer loop for iterating over instructions and
 record file

Former-commit-id: 824708f45739f0b93f3615b0074836c8e153f5b6
---
 tools/watch_syscall/wsc_instrument.cpp | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/tools/watch_syscall/wsc_instrument.cpp b/tools/watch_syscall/wsc_instrument.cpp
index 17cc8954e..fbc5b890f 100644
--- a/tools/watch_syscall/wsc_instrument.cpp
+++ b/tools/watch_syscall/wsc_instrument.cpp
@@ -673,17 +673,25 @@ bool	WSC_Instrument::add_segfault_checking(Instruction_t* insn, const CSO_Warnin
 
 	m_num_segfault_instrumentations++;
 
+	if (DoReverseSandboxing()) 	
+	{
+std::cerr << "Reverse sandboxing: " << hex << "0x" << insn->GetAddress()->GetVirtualOffset() << ": " << std::string(d.CompleteInstr) << std::endl;
+		return true;
+	}
+	else
+	{
 //	cout<<"Adding callback to "<<d.CompleteInstr<<endl;
-	if (insn->GetAddress())
-		cout<<"# ATTRIBUTE instrumented=0x"<<hex<<insn->GetAddress()->GetVirtualOffset() << ":sandboxed" << endl;
+		if (insn->GetAddress())
+			cout<<"# ATTRIBUTE instrumented=0x"<<hex<<insn->GetAddress()->GetVirtualOffset() << ":sandboxed" << endl;
 
-       	insertAssemblyBefore(firp,insn,"pusha");
-       	sprintf(tmpbuf,"lea  eax, %s", get_memory_addr(d).c_str());
-       	tmp=insertAssemblyAfter(firp,tmp,tmpbuf);	 // lea addr,  [ expression ]
-       	tmp=insertAssemblyAfter(firp,tmp,"call 0x0", callback);
-       	tmp=insertAssemblyAfter(firp,tmp,"popa");
+	       	insertAssemblyBefore(firp,insn,"pusha");
+	       	sprintf(tmpbuf,"lea  eax, %s", get_memory_addr(d).c_str());
+	       	tmp=insertAssemblyAfter(firp,tmp,tmpbuf);	 // lea addr,  [ expression ]
+       		tmp=insertAssemblyAfter(firp,tmp,"call 0x0", callback);
+	       	tmp=insertAssemblyAfter(firp,tmp,"popa");
 
-	return true;
+		return true;
+	}
 }
 
 
@@ -968,7 +976,7 @@ bool WSC_Instrument::execute()
 
 	if (DoReverseSandboxing()) 
 	{
-		success = success && add_reverse_sandboxing();
+		success = success && add_segfault_checking();
 	}
 
 	if (DoInputFiltering())
-- 
GitLab