From a90eeea92438672cec7701b46d6756a182f246bf Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Mon, 5 Oct 2015 19:22:44 -0700 Subject: [PATCH] Test: Rearrange fuzz-main for AFL additions --- src/platform/test/fuzz-main.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/platform/test/fuzz-main.c b/src/platform/test/fuzz-main.c index 9d7c545d9..4fa86d575 100644 --- a/src/platform/test/fuzz-main.c +++ b/src/platform/test/fuzz-main.c @@ -68,18 +68,9 @@ int main(int argc, char** argv) { return !parsed; } - struct VFile* rom = VFileOpen(args.fname, O_RDONLY); - - context.gba->hardCrash = false; - GBAContextLoadROMFromVFile(&context, rom, 0); - struct GBAVideoSoftwareRenderer renderer; renderer.outputBuffer = 0; - struct VFile* savestate = 0; - struct VFile* savestateOverlay = 0; - size_t overlayOffset; - if (!fuzzOpts.noVideo) { GBAVideoSoftwareRendererCreate(&renderer); renderer.outputBuffer = malloc(256 * 256 * 4); @@ -87,6 +78,19 @@ int main(int argc, char** argv) { context.renderer = &renderer.d; } +#ifdef __AFL_HAVE_MANUAL_CONTROL + __AFL_INIT(); +#endif + + struct VFile* rom = VFileOpen(args.fname, O_RDONLY); + + context.gba->hardCrash = false; + GBAContextLoadROMFromVFile(&context, rom, 0); + + struct VFile* savestate = 0; + struct VFile* savestateOverlay = 0; + size_t overlayOffset; + GBAContextStart(&context); if (fuzzOpts.savestate) { @@ -121,18 +125,21 @@ int main(int argc, char** argv) { _GBAFuzzRunloop(&context, fuzzOpts.frames); + GBAContextStop(&context); + GBAContextUnloadROM(&context); + if (savestate) { savestate->close(savestate); } if (savestateOverlay) { savestateOverlay->close(savestateOverlay); } - GBAContextStop(&context); - GBAContextDeinit(&context); + freeArguments(&args); if (renderer.outputBuffer) { free(renderer.outputBuffer); } + GBAContextDeinit(&context); return 0; }