aboutsummaryrefslogtreecommitdiff
path: root/include/snapshot-inl.h
diff options
context:
space:
mode:
authorAndrea Fioraldi <andreafioraldi@gmail.com>2020-04-07 10:50:21 +0200
committervan Hauser <vh@thc.org>2020-04-09 10:23:37 +0200
commit5efd306f7bd2a87ff4b628d6034ba2bcea4e022b (patch)
tree5e22bdf49f1e96a835e227d4612d86b398a004db /include/snapshot-inl.h
parentccbcb5c8d3e8cee8fbab49025429a8b7b7a4ee52 (diff)
downloadAFLplusplus-5efd306f7bd2a87ff4b628d6034ba2bcea4e022b.tar.gz
snapshot() in llvm mode
Diffstat (limited to 'include/snapshot-inl.h')
-rw-r--r--include/snapshot-inl.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/include/snapshot-inl.h b/include/snapshot-inl.h
new file mode 100644
index 00000000..b73a001e
--- /dev/null
+++ b/include/snapshot-inl.h
@@ -0,0 +1,59 @@
+/*
+ american fuzzy lop++ - snapshot helpers routines
+ ------------------------------------------------
+
+ Originally written by Michal Zalewski
+
+ Forkserver design by Jann Horn <jannhorn@googlemail.com>
+
+ Now maintained by Marc Heuse <mh@mh-sec.de>,
+ Heiko Eißfeldt <heiko.eissfeldt@hexco.de>,
+ Andrea Fioraldi <andreafioraldi@gmail.com>,
+ Dominik Maier <mail@dmnk.co>
+
+ Copyright 2016, 2017 Google Inc. All rights reserved.
+ Copyright 2019-2020 AFLplusplus Project. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ */
+
+// From AFL-Snapshot-LKM/include/afl_snapshot.h (must be kept synced)
+
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#define AFL_SNAPSHOT_FILE_NAME "/dev/afl_snapshot"
+
+#define AFL_SNAPSHOT_IOCTL_MAGIC 44313
+
+#define AFL_SNAPSHOT_IOCTL_DO _IO(AFL_SNAPSHOT_IOCTL_MAGIC, 1)
+#define AFL_SNAPSHOT_IOCTL_CLEAN _IO(AFL_SNAPSHOT_IOCTL_MAGIC, 2)
+
+static int afl_snapshot_dev_fd;
+
+static int afl_snapshot_init(void) {
+
+ afl_snapshot_dev_fd = open(AFL_SNAPSHOT_FILE_NAME, 0);
+ return afl_snapshot_dev_fd;
+
+}
+
+static int afl_snapshot_do() {
+
+ return ioctl(afl_snapshot_dev_fd, AFL_SNAPSHOT_IOCTL_DO);
+
+}
+
+static int afl_snapshot_clean(void) {
+
+ return ioctl(afl_snapshot_dev_fd, AFL_SNAPSHOT_IOCTL_CLEAN);
+
+}
+