diff options
| author | Anton Lindqvist <anton@basename.se> | 2018-08-28 19:07:26 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-08-28 10:07:26 -0700 |
| commit | b771b17ec95715c24715d730363f6f07bc46fd4f (patch) | |
| tree | cfdb14bb69866ad3bd3b35d21d6c803530b1f8b0 /executor/common_bsd.h | |
| parent | 7ef1de9ea4b02a8799b3a7f4b1d7b06a586b3f37 (diff) | |
Add mandatory OpenBSD bits (#689)
all: add openbsd support
squash of the following commits:
* openbsd: add mandatory bits
* report: add OpenBSD support
* executor: skip building kvm on OpenBSD
* executor: add OpenBSD support
Linking against libutil is necessary due to usage of openpty(3).
* executor: fix typo in fail() message
* fixup! report: add OpenBSD support
* fixup! openbsd: add mandatory bits
* fixup! openbsd: add mandatory bits
* fixup! openbsd: add mandatory bits
* fixup! report: add OpenBSD support
* gometalinter: skip sys/openbsd
Diffstat (limited to 'executor/common_bsd.h')
| -rw-r--r-- | executor/common_bsd.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/executor/common_bsd.h b/executor/common_bsd.h index b678dd968..004009861 100644 --- a/executor/common_bsd.h +++ b/executor/common_bsd.h @@ -18,3 +18,34 @@ static int do_sandbox_none(void) #define do_sandbox_setuid() 0 #define do_sandbox_namespace() 0 #endif + +#if GOOS_openbsd + +#define __syscall syscall + +#if SYZ_EXECUTOR || __NR_syz_open_pts + +#if defined(__OpenBSD__) +#include <termios.h> +#include <util.h> +#else +// Needed when compiling on Linux. +#include <pty.h> +#endif + +static uintptr_t syz_open_pts(void) +{ + int master, slave; + + if (openpty(&master, &slave, NULL, NULL, NULL) == -1) + return -1; + // Move the master fd up in order to reduce the chances of the fuzzer + // generating a call to close(2) with the same fd. + if (dup2(master, master + 100) != -1) + close(master); + return slave; +} + +#endif + +#endif |
