termux-packages/packages/busybox/networking-ftpd.c.patch
Fredrik Fornwall 1c2cf4f105 busybox: Avoid chroot() in ftpd due to seccomp
In Android 9 chroot() have been addded to the seccomp filter, so the
process is killed if trying to use it. Luckily busybox already contained
fallback if chroot() is not permitted.

See #2789.
2018-08-30 11:20:43 +02:00

35 lines
1.1 KiB
Diff

diff -u -r ../busybox-1.29.2/networking/ftpd.c ./networking/ftpd.c
--- ../busybox-1.29.2/networking/ftpd.c 2018-07-02 11:23:06.000000000 +0000
+++ ./networking/ftpd.c 2018-08-30 09:14:29.299721780 +0000
@@ -177,13 +177,9 @@
char msg_ok [(sizeof("NNN " MSG_OK ) + 3) & 0xfffc];
char msg_err[(sizeof("NNN " MSG_ERR) + 3) & 0xfffc];
} FIX_ALIASING;
-#define G (*ptr_to_globals)
-/* ^^^ about 75 bytes smaller code than this: */
-//#define G (*(struct globals*)bb_common_bufsiz1)
+#define G (*(struct globals*)bb_common_bufsiz1)
#define INIT_G() do { \
- SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \
- /*setup_common_bufsiz();*/ \
- \
+ setup_common_bufsiz(); \
/* Moved to main */ \
/*strcpy(G.msg_ok + 4, MSG_OK );*/ \
/*strcpy(G.msg_err + 4, MSG_ERR);*/ \
@@ -1301,7 +1297,14 @@
G.root_fd = xopen("/", O_RDONLY | O_DIRECTORY);
close_on_exec_on(G.root_fd);
#endif
+
+#ifdef __ANDROID__
+ /* Do not try chroot() as seccomp filtering in
+ * android 9 kills the process. */
+ if (false)
+#else
if (chroot(basedir) == 0)
+#endif
basedir = "/";
#if !BB_MMU
else {