From fc5eafeb2886605d4de1546846f06a12a18c87ef Mon Sep 17 00:00:00 2001 From: "J.W" Date: Mon, 22 Apr 2019 05:19:32 +0100 Subject: [PATCH 1/2] Fix macros for accept4(2) Both accept(2) and accept4(2) exist on linux but accept4(2) does not exist on macos 10.11.6 (and maybe other distros). --- src/lib/torsocks.c | 9 ++++++++- src/lib/torsocks.h | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/lib/torsocks.c b/src/lib/torsocks.c index 16f2da0..9527513 100644 --- a/src/lib/torsocks.c +++ b/src/lib/torsocks.c @@ -234,9 +234,16 @@ static void init_libc_symbols(void) tsocks_libc_socket = dlsym(libc_ptr, LIBC_SOCKET_NAME_STR); tsocks_libc_syscall = dlsym(libc_ptr, LIBC_SYSCALL_NAME_STR); tsocks_libc_execve = dlsym(libc_ptr, LIBC_EXECVE_NAME_STR); + tsocks_libc_accept = dlsym(libc_ptr, LIBC_ACCEPT_NAME_STR); +#if (defined(__linux__)) tsocks_libc_accept4 = dlsym(libc_ptr, LIBC_ACCEPT4_NAME_STR); +#endif + if (!tsocks_libc_connect || !tsocks_libc_close || !tsocks_libc_socket || - !tsocks_libc_syscall || !tsocks_libc_execve || ! tsocks_libc_accept4) { +#if (defined(__linux__)) + !tsocks_libc_accept4 || +#endif + !tsocks_libc_syscall || !tsocks_libc_execve || ! tsocks_libc_accept) { ERR("Unable to lookup symbols in " LIBC_NAME "(%s)", dlerror()); goto error; } diff --git a/src/lib/torsocks.h b/src/lib/torsocks.h index 33da526..bf9109d 100644 --- a/src/lib/torsocks.h +++ b/src/lib/torsocks.h @@ -30,8 +30,10 @@ * libc call outside of torsocks can be used. These are declared for each * symbol torsocks hijacked. */ +#define TSOCKS_LIBC_FUNC(name) \ + tsocks_libc_##name #define TSOCKS_LIBC_DECL(name, type, sig) \ - type (*tsocks_libc_##name)(sig); + type (*TSOCKS_LIBC_FUNC(name))(sig); #define TSOCKS_DECL(name, type, sig) \ extern type tsocks_##name(sig); -- 2.21.0