From 54db444d70b3307546e87c32658c58953a2b11b3 Mon Sep 17 00:00:00 2001 From: Alejandro Alvarado Date: Sat, 9 Mar 2019 01:51:33 -0600 Subject: [PATCH] Add getpid support re ticket 29659 --- src/common/compat.h | 4 ++++ src/lib/syscall.c | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/common/compat.h b/src/common/compat.h index d79301f..a92c651 100644 --- a/src/common/compat.h +++ b/src/common/compat.h @@ -135,6 +135,9 @@ void tsocks_once(tsocks_once_t *o, void (*init_routine)(void)); #ifndef __NR_getdents64 #define __NR_getdents64 -21 #endif +#ifndef __NR_getpid +#define __NR_getpid -22 +#endif #define TSOCKS_NR_SOCKET __NR_socket #define TSOCKS_NR_CONNECT __NR_connect @@ -157,6 +160,7 @@ void tsocks_once(tsocks_once_t *o, void (*init_routine)(void)); #define TSOCKS_NR_MEMFD_CREATE __NR_memfd_create #define TSOCKS_NR_GETDENTS __NR_getdents #define TSOCKS_NR_GETDENTS64 __NR_getdents64 +#define TSOCKS_NR_GETPID __NR_getpid /* * Despite glibc providing wrappers for these calls for a long time diff --git a/src/lib/syscall.c b/src/lib/syscall.c index f793da7..38406da 100644 --- a/src/lib/syscall.c +++ b/src/lib/syscall.c @@ -467,6 +467,13 @@ static LIBC_SYSCALL_RET_TYPE handle_getdents64(va_list args) return tsocks_libc_syscall(TSOCKS_NR_GETDENTS64, fd, dirp, count); } +/* + * Handle getpid(2) syscall. + */ +static LIBC_SYSCALL_RET_TYPE handle_getpid(void) +{ + return tsocks_libc_syscall(TSOCKS_NR_GETPID); +} #endif /* __linux__ */ @@ -595,6 +602,9 @@ LIBC_SYSCALL_RET_TYPE tsocks_syscall(long int number, va_list args) case TSOCKS_NR_GETDENTS64: ret = handle_getdents64(args); break; + case TSOCKS_NR_GETPID: + ret = handle_getpid(); + break; #endif /* __linux__ */ default: /* -- GitLab