add missing piece for CTX coverage

This commit is contained in:
van Hauser 2020-04-08 12:52:14 +02:00
parent 968295ed81
commit 055ca98fb2
2 changed files with 18 additions and 0 deletions

View File

@ -682,6 +682,22 @@ bool AFLCoverage::runOnModule(Module &M) {
}
// in CTX mode we have to restore the original context for the caller -
// she might be calling other functions which need the correct CTX
if (ctx_str) {
Instruction *Inst = BB.getTerminator();
if (isa<ReturnInst>(Inst) || isa<ResumeInst>(Inst)) {
IRBuilder<> Post_IRB(Inst);
StoreInst * RestoreCtx = Post_IRB.CreateStore(PrevCtx, AFLContext);
RestoreCtx->setMetadata(M.getMDKindID("nosanitize"),
MDNode::get(C, None));
}
}
inst_blocks++;
}

View File

@ -273,6 +273,7 @@ static void __afl_start_snapshots(void) {
}
}
#endif
/* Fork server logic. */
@ -287,6 +288,7 @@ static void __afl_start_forkserver(void) {
return;
}
#endif
static u8 tmp[4];