From 5258ea42bb3216c2f377b1b336a7eed8fe2c3b9c Mon Sep 17 00:00:00 2001
From: Anh <zenpoems@gmail.com>
Date: Fri, 24 Aug 2018 20:40:41 +0000
Subject: [PATCH] Respect red zone when inserting fork server code

---
 afl_transforms/tools/zafl/zafl.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/afl_transforms/tools/zafl/zafl.cpp b/afl_transforms/tools/zafl/zafl.cpp
index 306df83..8a07e25 100644
--- a/afl_transforms/tools/zafl/zafl.cpp
+++ b/afl_transforms/tools/zafl/zafl.cpp
@@ -444,7 +444,8 @@ void Zafl_t::insertForkServer(Instruction_t* p_entry)
 
 	// insert the instrumentation
 	auto tmp=p_entry;
-    	(void)insertAssemblyBefore(getFileIR(),tmp," push rdi") ;
+	(void)insertAssemblyBefore(getFileIR(), tmp, "lea rsp, [rsp-128]");
+    	tmp=  insertAssemblyAfter(getFileIR(),tmp," push rdi") ;
 	tmp=  insertAssemblyAfter(getFileIR(), tmp," push rsi ") ;
 	tmp=  insertAssemblyAfter(getFileIR(), tmp," push rbp") ;
 	tmp=  insertAssemblyAfter(getFileIR(), tmp," push rdx") ;
@@ -476,7 +477,7 @@ void Zafl_t::insertForkServer(Instruction_t* p_entry)
 	tmp=  insertAssemblyAfter(getFileIR(), tmp," pop rdx");
 	tmp=  insertAssemblyAfter(getFileIR(), tmp," pop rbp");
 	tmp=  insertAssemblyAfter(getFileIR(), tmp," pop rsi");
-	tmp=  insertAssemblyAfter(getFileIR(), tmp," pop rdi");
+	tmp=  insertAssemblyAfter(getFileIR(), tmp," lea rsp, [rsp+128]");
 }
 
 void Zafl_t::insertForkServer(string p_forkServerEntry)
-- 
GitLab