WinAPI uses __stdcall calling convention on x86. Wrong
calling convention causes UB, which in this case breaks
dco-win functionality.
Signed-off-by: Lev Stipakov <lev@openvpn.net>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <
20230131125448.1913-1-lstipakov@gmail.com>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg26113.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
{
volatile int *signal_received = &sig_info->signal_received;
/* GetOverlappedResultEx is available starting from Windows 8 */
- typedef BOOL (*get_overlapped_result_ex_t) (HANDLE, LPOVERLAPPED, LPDWORD, DWORD, BOOL);
+ typedef BOOL (WINAPI *get_overlapped_result_ex_t)(HANDLE, LPOVERLAPPED, LPDWORD, DWORD, BOOL);
get_overlapped_result_ex_t get_overlapped_result_ex =
(get_overlapped_result_ex_t)GetProcAddress(GetModuleHandle("Kernel32.dll"),
"GetOverlappedResultEx");
*process_arch = ARCH_UNKNOWN;
*host_arch = ARCH_NATIVE;
- typedef BOOL (__stdcall *is_wow64_process2_t)(HANDLE, USHORT *, USHORT *);
+ typedef BOOL (WINAPI *is_wow64_process2_t)(HANDLE, USHORT *, USHORT *);
is_wow64_process2_t is_wow64_process2 = (is_wow64_process2_t)
GetProcAddress(GetModuleHandle("Kernel32.dll"), "IsWow64Process2");