better error report for old qemu/frida cmplog
MODIFY
include/types.h
include/types.h
@@ -47,6 +47,7 @@ typedef uint128_t u128;
#define FS_ERROR_SHMAT 8
#define FS_ERROR_MMAP 16
#define FS_ERROR_OLD_CMPLOG 32
+#define FS_ERROR_OLD_CMPLOG_QEMU 64
/* Reporting options */
#define FS_OPT_ENABLED 0x80000001

MODIFY
src/afl-forkserver.c
src/afl-forkserver.c
@@ -347,6 +347,11 @@ static void report_error_and_exit(int error) {
"the -c cmplog target was instrumented with an too old afl++ "
"version, you need to recompile it.");
break;
+ case FS_ERROR_OLD_CMPLOG_QEMU:
+ FATAL(
+ "The AFL++ QEMU/FRIDA loaders are from an older version, for -c you "
+ "need to recompile it.\n");
+ break;
default:
FATAL("unknown error code %d from fuzzing target!", error);
@@ -670,10 +675,18 @@ void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv,
if ((status & FS_OPT_NEWCMPLOG) == 0 && fsrv->cmplog_binary) {
+ if (fsrv->qemu_mode || fsrv->frida_mode) {
+
+ report_error_and_exit(FS_ERROR_OLD_CMPLOG_QEMU);
+
+ } else {
+
report_error_and_exit(FS_ERROR_OLD_CMPLOG);
}
+ }
+
if ((status & FS_OPT_SNAPSHOT) == FS_OPT_SNAPSHOT) {
fsrv->snapshot = 1;

better error report for old qemu/frida cmplog