From 78e3ad98f6120342ae56b9812c695637fc245c75 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Fri, 3 Aug 2018 19:48:30 +0200 Subject: sys/test: add more tests Add syz_errno syscall which sets errno to the argument, and add a test with different errno values. This mostly tests the testing infrastructure itself. Add syz_compare syscall which compare two blobs, this can be used for testing of argument memory layout. Implement syz_mmap and fix Makefile to allow building syz-execprog for test OS. Useful for debugging. Update #603 --- executor/common_test.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'executor/common_test.h') 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 #if SYZ_EXECUTOR || __NR_syz_mmap +#include + +// 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 + +// 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 +#include + +// 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 -- cgit mrf-deployment