From 346fb4e5e977a0f0709a4fcdf9265f163fe32459 Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Fri, 2 Dec 2016 13:18:42 +0100 Subject: executor: don't try to open tun if it's not enabled --- csource/common.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'csource/common.go') diff --git a/csource/common.go b/csource/common.go index 0cedc9920..17aa4b0ef 100644 --- a/csource/common.go +++ b/csource/common.go @@ -34,6 +34,7 @@ var commonHeader = ` #include #include #include +#include #include #include #include @@ -161,7 +162,7 @@ static void execute_command(const char* format, ...) va_end(args); } -int tunfd; +int tunfd = -1; #define ADDR_MAX_LEN 32 @@ -222,6 +223,9 @@ static void initialize_tun(uint64_t pid) static uintptr_t syz_emit_ethernet(uintptr_t a0, uintptr_t a1) { + if (tunfd < 0) + return (uintptr_t)-1; + int64_t length = a0; char* data = (char*)a1; return write(tunfd, data, length); @@ -351,7 +355,7 @@ static uintptr_t execute_syscall(int nr, uintptr_t a0, uintptr_t a1, uintptr_t a } } -static void setup_main_process(uint64_t pid) +static void setup_main_process(uint64_t pid, bool enable_tun) { struct sigaction sa; memset(&sa, 0, sizeof(sa)); @@ -361,7 +365,8 @@ static void setup_main_process(uint64_t pid) install_segv_handler(); #ifdef __NR_syz_emit_ethernet - initialize_tun(pid); + if (enable_tun) + initialize_tun(pid); #endif char tmpdir_template[] = "./syzkaller.XXXXXX"; -- cgit mrf-deployment