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