aboutsummaryrefslogtreecommitdiffstats
path: root/executor/common_test.h
diff options
context:
space:
mode:
Diffstat (limited to 'executor/common_test.h')
-rw-r--r--executor/common_test.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/executor/common_test.h b/executor/common_test.h
index 78b3f8e22..75ec81721 100644
--- a/executor/common_test.h
+++ b/executor/common_test.h
@@ -7,8 +7,43 @@
#include <unistd.h>
#if SYZ_EXECUTOR || __NR_syz_mmap
+#include <sys/mman.h>
+
+// syz_mmap(addr vma, len len[addr])
static long syz_mmap(long a0, long a1)
{
+ return (long)mmap((void*)a0, a1, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE | MAP_FIXED, -1, 0);
+}
+#endif
+
+#if SYZ_EXECUTOR || __NR_syz_errno
+#include <errno.h>
+
+// syz_errno(v int32)
+static long syz_errno(long v)
+{
+ errno = v;
+ return v == 0 ? 0 : -1;
+}
+#endif
+
+#if SYZ_EXECUTOR || __NR_syz_compare
+#include <errno.h>
+#include <string.h>
+
+// syz_compare(want ptr[in, string], want_len len[want], got ptr[in, compare_data], got_len len[got])
+static long syz_compare(long want, long want_len, long got, long got_len)
+{
+ if (want_len != got_len) {
+ debug("syz_compare: want_len=%lu got_len=%lu\n", want_len, got_len);
+ errno = EBADF;
+ return -1;
+ }
+ if (memcmp((void*)want, (void*)got, want_len)) {
+ debug("syz_compare: data differs\n");
+ errno = EINVAL;
+ return -1;
+ }
return 0;
}
#endif