scripts/setup-ubuntu.sh: Huh. We only have Python 3.5 here.
[termux-packages] / packages / torsocks / 0001-syscall-Add-clone.patch
CommitLineData
5fd4459e
VB
1From 3b78843ee18a3099196a61c7d07c0e2d24d1fe84 Mon Sep 17 00:00:00 2001
2From: vishalbiswas <vshlbiswas@ymail.com>
3Date: Tue, 17 Jan 2017 10:10:23 +0530
4Subject: [PATCH] syscall: Add clone
5
6Signed-off-by: vishalbiswas <vshlbiswas@ymail.com>
7---
8 src/common/compat.h | 4 ++++
9 src/lib/syscall.c | 21 +++++++++++++++++++++
10 2 files changed, 25 insertions(+)
11
12diff --git a/src/common/compat.h b/src/common/compat.h
13index f490113..bf42f07 100644
14--- a/src/common/compat.h
15+++ b/src/common/compat.h
16@@ -126,6 +126,9 @@ void tsocks_once(tsocks_once_t *o, void (*init_routine)(void));
17 #ifndef __NR_fork
18 #define __NR_fork -18
19 #endif
20+#ifndef __NR_clone
21+#define __NR_clone -19
22+#endif
23
24 #define TSOCKS_NR_SOCKET __NR_socket
25 #define TSOCKS_NR_CONNECT __NR_connect
26@@ -145,6 +148,7 @@ void tsocks_once(tsocks_once_t *o, void (*init_routine)(void));
27 #define TSOCKS_NR_GETTIMEOFDAY __NR_gettimeofday
28 #define TSOCKS_NR_CLOCK_GETTIME __NR_clock_gettime
29 #define TSOCKS_NR_FORK __NR_fork
30+#define TSOCKS_NR_CLONE __NR_clone
31
32 /*
33 * Despite glibc providing wrappers for these calls for a long time
34diff --git a/src/lib/syscall.c b/src/lib/syscall.c
35index d0fdaaa..c8a9b46 100644
36--- a/src/lib/syscall.c
37+++ b/src/lib/syscall.c
38@@ -423,6 +423,24 @@ static LIBC_SYSCALL_RET_TYPE handle_fork(void)
39 {
40 return tsocks_libc_syscall(TSOCKS_NR_FORK);
41 }
42+
43+/*
44+ * * Handle clone(2) syscall.
45+ * */
46+static LIBC_SYSCALL_RET_TYPE handle_clone(va_list args)
47+{
48+ int (*fn)(void*);
49+ void* child_stack;
50+ int flags;
51+ void* arg;
52+
53+ fn = va_arg(args, __typeof__(fn));
54+ child_stack = va_arg(args, __typeof__(child_stack));
55+ flags = va_arg(args, __typeof__(flags));
56+ arg = va_arg(args, __typeof__(arg));
57+
58+ return tsocks_libc_syscall(TSOCKS_NR_CLONE, fn, child_stack, flags, arg);
59+}
60 #endif /* __linux__ */
61
62 /*
63@@ -541,6 +559,9 @@ LIBC_SYSCALL_RET_TYPE tsocks_syscall(long int number, va_list args)
64 case TSOCKS_NR_FORK:
65 ret = handle_fork();
66 break;
67+ case TSOCKS_NR_CLONE:
68+ ret = handle_clone(args);
69+ break;
70 #endif /* __linux__ */
71 default:
72 /*
73--
742.11.0
75