diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2019-10-13 22:19:36 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2019-10-14 23:22:23 +0100 |
commit | 4b19be30aa626b327c885dae62c559ec0e9fb935 (patch) | |
tree | 76e74807bc479502e13866b581b6bf86734ec634 /net-proxy/torsocks/files | |
parent | 30d6f67c98d149508509d5e86f176d558793acc0 (diff) |
gentoo resync : 13.10.2019
Diffstat (limited to 'net-proxy/torsocks/files')
-rw-r--r-- | net-proxy/torsocks/files/torsocks-2.3.0-fix-syscall.patch | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/net-proxy/torsocks/files/torsocks-2.3.0-fix-syscall.patch b/net-proxy/torsocks/files/torsocks-2.3.0-fix-syscall.patch new file mode 100644 index 000000000000..93eb7ad45379 --- /dev/null +++ b/net-proxy/torsocks/files/torsocks-2.3.0-fix-syscall.patch @@ -0,0 +1,94 @@ +From 4c00ec8773fd63fa48ef49e1ccf2adac598427be Mon Sep 17 00:00:00 2001 +From: Alejandro Alvarado <44826516+seisvelas@users.noreply.github.com> +Date: Mon, 17 Dec 2018 19:25:18 -0600 +Subject: Add getdents / getdents64 support re ticket 28861 + +--- + src/common/compat.h | 8 ++++++++ + src/lib/syscall.c | 37 +++++++++++++++++++++++++++++++++++++ + 2 files changed, 45 insertions(+) + +diff --git a/src/common/compat.h b/src/common/compat.h +index a9b73c2..d79301f 100644 +--- a/src/common/compat.h ++++ b/src/common/compat.h +@@ -129,6 +129,12 @@ void tsocks_once(tsocks_once_t *o, void (*init_routine)(void)); + #ifndef __NR_memfd_create + #define __NR_memfd_create -19 + #endif ++#ifndef __NR_getdents ++#define __NR_getdents -20 ++#endif ++#ifndef __NR_getdents64 ++#define __NR_getdents64 -21 ++#endif + + #define TSOCKS_NR_SOCKET __NR_socket + #define TSOCKS_NR_CONNECT __NR_connect +@@ -149,6 +155,8 @@ void tsocks_once(tsocks_once_t *o, void (*init_routine)(void)); + #define TSOCKS_NR_CLOCK_GETTIME __NR_clock_gettime + #define TSOCKS_NR_FORK __NR_fork + #define TSOCKS_NR_MEMFD_CREATE __NR_memfd_create ++#define TSOCKS_NR_GETDENTS __NR_getdents ++#define TSOCKS_NR_GETDENTS64 __NR_getdents64 + + /* + * Despite glibc providing wrappers for these calls for a long time +diff --git a/src/lib/syscall.c b/src/lib/syscall.c +index 7fba580..f793da7 100644 +--- a/src/lib/syscall.c ++++ b/src/lib/syscall.c +@@ -437,6 +437,37 @@ static LIBC_SYSCALL_RET_TYPE handle_memfd_create(va_list args) + + return tsocks_libc_syscall(TSOCKS_NR_MEMFD_CREATE, name, flags); + } ++/* ++ * Handle getdents(2) syscall. ++ */ ++static LIBC_SYSCALL_RET_TYPE handle_getdents(va_list args) ++{ ++ unsigned int fd; ++ struct linux_dirent *dirp; ++ unsigned int count; ++ ++ fd = va_arg(args, __typeof__(fd)); ++ dirp = va_arg(args, __typeof__(dirp)); ++ count = va_arg(args, __typeof__(count)); ++ ++ return tsocks_libc_syscall(TSOCKS_NR_GETDENTS, fd, dirp, count); ++} ++/* ++ * Handle getdents64(2) syscall. ++ */ ++static LIBC_SYSCALL_RET_TYPE handle_getdents64(va_list args) ++{ ++ unsigned int fd; ++ struct linux_dirent64 *dirp; ++ unsigned int count; ++ ++ fd = va_arg(args, __typeof__(fd)); ++ dirp = va_arg(args, __typeof__(dirp)); ++ count = va_arg(args, __typeof__(count)); ++ ++ return tsocks_libc_syscall(TSOCKS_NR_GETDENTS64, fd, dirp, count); ++} ++ + #endif /* __linux__ */ + + /* +@@ -558,6 +589,12 @@ LIBC_SYSCALL_RET_TYPE tsocks_syscall(long int number, va_list args) + case TSOCKS_NR_MEMFD_CREATE: + ret = handle_memfd_create(args); + break; ++ case TSOCKS_NR_GETDENTS: ++ ret = handle_getdents(args); ++ break; ++ case TSOCKS_NR_GETDENTS64: ++ ret = handle_getdents64(args); ++ break; + #endif /* __linux__ */ + default: + /* +-- +cgit v1.1 + |