commit a25ae10b74dedc2c023449563a1471842fae4c99 Author: Luke Gallagher <l...@hypergeometric.net> Date: Fri Aug 30 09:53:45 2013 +1000
Use extern for tsocks_libc_* in torsocks.h Define tsocks_libc_* in the relevant source files and define them as external in torsocks.h to avoid duplicate symbol errors. Signed-off-by: David Goulet <dgou...@ev0ke.net> --- src/lib/connect.c | 3 +++ src/lib/getaddrinfo.c | 4 ++++ src/lib/gethostbyname.c | 29 +++++++++++++++++++++++++++++ src/lib/getpeername.c | 4 ++++ src/lib/recv.c | 3 +++ src/lib/socket.c | 3 +++ src/lib/socketpair.c | 3 +++ src/lib/syscall.c | 6 ++++++ src/lib/torsocks.h | 36 ++++++++++++++++++------------------ 9 files changed, 73 insertions(+), 18 deletions(-) diff --git a/src/lib/connect.c b/src/lib/connect.c index 357a313..3d75a94 100644 --- a/src/lib/connect.c +++ b/src/lib/connect.c @@ -25,6 +25,9 @@ #include "torsocks.h" +/* connect(2) */ +TSOCKS_LIBC_DECL(connect, LIBC_CONNECT_RET_TYPE, LIBC_CONNECT_SIG) + /* * Torsocks call for connect(2). */ diff --git a/src/lib/getaddrinfo.c b/src/lib/getaddrinfo.c index 683bfc7..7a7a144 100644 --- a/src/lib/getaddrinfo.c +++ b/src/lib/getaddrinfo.c @@ -24,6 +24,10 @@ #include "torsocks.h" +/* getaddrinfo(3) */ +TSOCKS_LIBC_DECL(getaddrinfo, LIBC_GETADDRINFO_RET_TYPE, + LIBC_GETADDRINFO_SIG) + /* * Torsocks call for getaddrinfo(3). */ diff --git a/src/lib/gethostbyname.c b/src/lib/gethostbyname.c index bab01b0..9ba5cee 100644 --- a/src/lib/gethostbyname.c +++ b/src/lib/gethostbyname.c @@ -25,6 +25,35 @@ #include "torsocks.h" +struct hostent tsocks_he; +char *tsocks_he_addr_list[2]; +char tsocks_he_addr[INET_ADDRSTRLEN]; +char tsocks_he_name[255]; + +/* gethostbyname(3) */ +TSOCKS_LIBC_DECL(gethostbyname, LIBC_GETHOSTBYNAME_RET_TYPE, + LIBC_GETHOSTBYNAME_SIG) + +/* gethostbyname_r(3) */ +TSOCKS_LIBC_DECL(gethostbyname_r, LIBC_GETHOSTBYNAME_R_RET_TYPE, + LIBC_GETHOSTBYNAME_R_SIG) + +/* gethostbyname2(3) */ +TSOCKS_LIBC_DECL(gethostbyname2, LIBC_GETHOSTBYNAME2_RET_TYPE, + LIBC_GETHOSTBYNAME2_SIG) + +/* gethostbyname2_r(3) */ +TSOCKS_LIBC_DECL(gethostbyname2_r, LIBC_GETHOSTBYNAME2_R_RET_TYPE, + LIBC_GETHOSTBYNAME2_R_SIG) + +/* gethostbyaddr(3) */ +TSOCKS_LIBC_DECL(gethostbyaddr, LIBC_GETHOSTBYADDR_RET_TYPE, + LIBC_GETHOSTBYADDR_SIG) + +/* gethostbyaddr_r(3) */ +TSOCKS_LIBC_DECL(gethostbyaddr_r, LIBC_GETHOSTBYADDR_R_RET_TYPE, + LIBC_GETHOSTBYADDR_R_SIG) + /* * Torsocks call for gethostbyname(3). * diff --git a/src/lib/getpeername.c b/src/lib/getpeername.c index 8e4b671..8e2bd44 100644 --- a/src/lib/getpeername.c +++ b/src/lib/getpeername.c @@ -22,6 +22,10 @@ #include "torsocks.h" +/* getpeername(2) */ +TSOCKS_LIBC_DECL(getpeername, LIBC_GETPEERNAME_RET_TYPE, + LIBC_GETPEERNAME_SIG) + /* * Torsocks call for getpeername(2). */ diff --git a/src/lib/recv.c b/src/lib/recv.c index 895892d..9f9aefc 100644 --- a/src/lib/recv.c +++ b/src/lib/recv.c @@ -22,6 +22,9 @@ #include "torsocks.h" +/* recvmsg(2) */ +TSOCKS_LIBC_DECL(recvmsg, LIBC_RECVMSG_RET_TYPE, LIBC_RECVMSG_SIG) + /* * Torsocks call for recvmsg(2) * diff --git a/src/lib/socket.c b/src/lib/socket.c index ce28576..aa5297e 100644 --- a/src/lib/socket.c +++ b/src/lib/socket.c @@ -21,6 +21,9 @@ #include "torsocks.h" +/* socket(2) */ +TSOCKS_LIBC_DECL(socket, LIBC_SOCKET_RET_TYPE, LIBC_SOCKET_SIG) + /* * Torsocks call for socket(2) */ diff --git a/src/lib/socketpair.c b/src/lib/socketpair.c index 97a5761..599b4c3 100644 --- a/src/lib/socketpair.c +++ b/src/lib/socketpair.c @@ -21,6 +21,9 @@ #include "torsocks.h" +/* socketpair(2) */ +TSOCKS_LIBC_DECL(socketpair, LIBC_SOCKETPAIR_RET_TYPE, LIBC_SOCKETPAIR_SIG) + /* * Torsocks call for socketpair(2) */ diff --git a/src/lib/syscall.c b/src/lib/syscall.c index af60060..0edd460 100644 --- a/src/lib/syscall.c +++ b/src/lib/syscall.c @@ -22,6 +22,12 @@ #include "torsocks.h" +/* syscall(2) */ +TSOCKS_LIBC_DECL(syscall, LIBC_SYSCALL_RET_TYPE, LIBC_SYSCALL_SIG) + +/* close(2) */ +TSOCKS_LIBC_DECL(close, LIBC_CLOSE_RET_TYPE, LIBC_CLOSE_SIG) + /* * Handle close syscall to be called with tsocks call. */ diff --git a/src/lib/torsocks.h b/src/lib/torsocks.h index 3a23eb4..1554abc 100644 --- a/src/lib/torsocks.h +++ b/src/lib/torsocks.h @@ -83,10 +83,10 @@ * use free(). So, we use static memory here to mimic the libc call and avoid * memory leaks. This also void the need of hijacking freehostent(3). */ -struct hostent tsocks_he; -char *tsocks_he_addr_list[2]; -char tsocks_he_addr[INET_ADDRSTRLEN]; -char tsocks_he_name[255]; +extern struct hostent tsocks_he; +extern char *tsocks_he_addr_list[2]; +extern char tsocks_he_addr[INET_ADDRSTRLEN]; +extern char tsocks_he_name[255]; #define LIBC_GETHOSTBYNAME_NAME gethostbyname #define LIBC_GETHOSTBYNAME_NAME_STR XSTR(LIBC_GETHOSTBYNAME_NAME) @@ -208,83 +208,83 @@ struct hostent **__result, int *__h_errnop */ /* connect(2) */ -TSOCKS_LIBC_DECL(connect, LIBC_CONNECT_RET_TYPE, LIBC_CONNECT_SIG) +extern TSOCKS_LIBC_DECL(connect, LIBC_CONNECT_RET_TYPE, LIBC_CONNECT_SIG) TSOCKS_DECL(connect, LIBC_CONNECT_RET_TYPE, LIBC_CONNECT_SIG) #define LIBC_CONNECT_DECL \ LIBC_CONNECT_RET_TYPE LIBC_CONNECT_NAME(LIBC_CONNECT_SIG) /* recvmsg(2) */ -TSOCKS_LIBC_DECL(recvmsg, LIBC_RECVMSG_RET_TYPE, LIBC_RECVMSG_SIG) +extern TSOCKS_LIBC_DECL(recvmsg, LIBC_RECVMSG_RET_TYPE, LIBC_RECVMSG_SIG) #define LIBC_RECVMSG_DECL \ LIBC_RECVMSG_RET_TYPE LIBC_RECVMSG_NAME(LIBC_RECVMSG_SIG) /* socket(2) */ -TSOCKS_LIBC_DECL(socket, LIBC_SOCKET_RET_TYPE, LIBC_SOCKET_SIG) +extern TSOCKS_LIBC_DECL(socket, LIBC_SOCKET_RET_TYPE, LIBC_SOCKET_SIG) TSOCKS_DECL(socket, LIBC_SOCKET_RET_TYPE, LIBC_SOCKET_SIG) #define LIBC_SOCKET_DECL \ LIBC_SOCKET_RET_TYPE LIBC_SOCKET_NAME(LIBC_SOCKET_SIG) /* socketpair(2) */ -TSOCKS_LIBC_DECL(socketpair, LIBC_SOCKETPAIR_RET_TYPE, LIBC_SOCKETPAIR_SIG) +extern TSOCKS_LIBC_DECL(socketpair, LIBC_SOCKETPAIR_RET_TYPE, LIBC_SOCKETPAIR_SIG) TSOCKS_DECL(socketpair, LIBC_SOCKETPAIR_RET_TYPE, LIBC_SOCKETPAIR_SIG) #define LIBC_SOCKETPAIR_DECL \ LIBC_SOCKETPAIR_RET_TYPE LIBC_SOCKETPAIR_NAME(LIBC_SOCKETPAIR_SIG) /* syscall(2) */ -TSOCKS_LIBC_DECL(syscall, LIBC_SYSCALL_RET_TYPE, LIBC_SYSCALL_SIG) +extern TSOCKS_LIBC_DECL(syscall, LIBC_SYSCALL_RET_TYPE, LIBC_SYSCALL_SIG) #define LIBC_SYSCALL_DECL \ LIBC_SYSCALL_RET_TYPE LIBC_SYSCALL_NAME(LIBC_SYSCALL_SIG) /* close(2) */ -TSOCKS_LIBC_DECL(close, LIBC_CLOSE_RET_TYPE, LIBC_CLOSE_SIG) +extern TSOCKS_LIBC_DECL(close, LIBC_CLOSE_RET_TYPE, LIBC_CLOSE_SIG) TSOCKS_DECL(close, LIBC_CLOSE_RET_TYPE, LIBC_CLOSE_SIG) #define LIBC_CLOSE_DECL \ LIBC_CLOSE_RET_TYPE LIBC_CLOSE_NAME(LIBC_CLOSE_SIG) /* gethostbyname(3) */ -TSOCKS_LIBC_DECL(gethostbyname, LIBC_GETHOSTBYNAME_RET_TYPE, +extern TSOCKS_LIBC_DECL(gethostbyname, LIBC_GETHOSTBYNAME_RET_TYPE, LIBC_GETHOSTBYNAME_SIG) #define LIBC_GETHOSTBYNAME_DECL LIBC_GETHOSTBYNAME_RET_TYPE \ LIBC_GETHOSTBYNAME_NAME(LIBC_GETHOSTBYNAME_SIG) /* gethostbyname_r(3) */ -TSOCKS_LIBC_DECL(gethostbyname_r, LIBC_GETHOSTBYNAME_R_RET_TYPE, +extern TSOCKS_LIBC_DECL(gethostbyname_r, LIBC_GETHOSTBYNAME_R_RET_TYPE, LIBC_GETHOSTBYNAME_R_SIG) #define LIBC_GETHOSTBYNAME_R_DECL LIBC_GETHOSTBYNAME_R_RET_TYPE \ LIBC_GETHOSTBYNAME_R_NAME(LIBC_GETHOSTBYNAME_R_SIG) /* gethostbyname2(3) */ -TSOCKS_LIBC_DECL(gethostbyname2, LIBC_GETHOSTBYNAME2_RET_TYPE, +extern TSOCKS_LIBC_DECL(gethostbyname2, LIBC_GETHOSTBYNAME2_RET_TYPE, LIBC_GETHOSTBYNAME2_SIG) #define LIBC_GETHOSTBYNAME2_DECL LIBC_GETHOSTBYNAME2_RET_TYPE \ LIBC_GETHOSTBYNAME2_NAME(LIBC_GETHOSTBYNAME2_SIG) /* gethostbyname2_r(3) */ -TSOCKS_LIBC_DECL(gethostbyname2_r, LIBC_GETHOSTBYNAME2_R_RET_TYPE, +extern TSOCKS_LIBC_DECL(gethostbyname2_r, LIBC_GETHOSTBYNAME2_R_RET_TYPE, LIBC_GETHOSTBYNAME2_R_SIG) #define LIBC_GETHOSTBYNAME2_R_DECL LIBC_GETHOSTBYNAME2_R_RET_TYPE \ LIBC_GETHOSTBYNAME2_R_NAME(LIBC_GETHOSTBYNAME2_R_SIG) /* gethostbyaddr(3) */ -TSOCKS_LIBC_DECL(gethostbyaddr, LIBC_GETHOSTBYADDR_RET_TYPE, +extern TSOCKS_LIBC_DECL(gethostbyaddr, LIBC_GETHOSTBYADDR_RET_TYPE, LIBC_GETHOSTBYADDR_SIG) #define LIBC_GETHOSTBYADDR_DECL LIBC_GETHOSTBYADDR_RET_TYPE \ LIBC_GETHOSTBYADDR_NAME(LIBC_GETHOSTBYADDR_SIG) /* gethostbyaddr_r(3) */ -TSOCKS_LIBC_DECL(gethostbyaddr_r, LIBC_GETHOSTBYADDR_R_RET_TYPE, +extern TSOCKS_LIBC_DECL(gethostbyaddr_r, LIBC_GETHOSTBYADDR_R_RET_TYPE, LIBC_GETHOSTBYADDR_R_SIG) #define LIBC_GETHOSTBYADDR_R_DECL LIBC_GETHOSTBYADDR_R_RET_TYPE \ LIBC_GETHOSTBYADDR_R_NAME(LIBC_GETHOSTBYADDR_R_SIG) /* getaddrinfo(3) */ -TSOCKS_LIBC_DECL(getaddrinfo, LIBC_GETADDRINFO_RET_TYPE, +extern TSOCKS_LIBC_DECL(getaddrinfo, LIBC_GETADDRINFO_RET_TYPE, LIBC_GETADDRINFO_SIG) #define LIBC_GETADDRINFO_DECL LIBC_GETADDRINFO_RET_TYPE \ LIBC_GETADDRINFO_NAME(LIBC_GETADDRINFO_SIG) /* getpeername(2) */ -TSOCKS_LIBC_DECL(getpeername, LIBC_GETPEERNAME_RET_TYPE, +extern TSOCKS_LIBC_DECL(getpeername, LIBC_GETPEERNAME_RET_TYPE, LIBC_GETPEERNAME_SIG) #define LIBC_GETPEERNAME_DECL LIBC_GETPEERNAME_RET_TYPE \ LIBC_GETPEERNAME_NAME(LIBC_GETPEERNAME_SIG) _______________________________________________ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits