From bdffe2484cfffefd2f3321cb42890be70887cf44 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Wed, 27 Sep 2017 11:44:15 +0200 Subject: executor: fix execution of windows syscalls First, they must be called with stdcall convention. Second, wrap them in __try/__except because they can crash. --- pkg/csource/common.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'pkg') diff --git a/pkg/csource/common.go b/pkg/csource/common.go index c38f805da..7f34a8753 100644 --- a/pkg/csource/common.go +++ b/pkg/csource/common.go @@ -146,7 +146,11 @@ __attribute__((noreturn)) static void doexit(int status) #endif #if defined(SYZ_EXECUTOR) -typedef long (*syscall_t)(long, long, long, long, long, long, long, long, long); +#ifndef SYSCALLAPI +#define SYSCALLAPI +#endif + +typedef long(SYSCALLAPI* syscall_t)(long, long, long, long, long, long, long, long, long); struct call_t { const char* name; @@ -274,6 +278,7 @@ static uint16_t csum_inet_digest(struct csum_inet* csum) return ~csum->acc; } #endif + #if defined(SYZ_EXECUTOR) || defined(SYZ_HANDLE_SEGV) static __thread int skip_segv; static __thread jmp_buf segv_env; -- cgit mrf-deployment