diff options
author | Denys Vlasenko | 2015-10-24 02:29:00 +0200 |
---|---|---|
committer | Denys Vlasenko | 2015-10-24 02:29:00 +0200 |
commit | 5c23f2566c1d26c62024cc2c78ca5aad4c99dd33 (patch) | |
tree | d0d6dfadf3831123ae0b3cf44f28b01d94ea4111 /networking/ftpd.c | |
parent | 7ab00a0de9cfeeacff70a74402808d225ba07397 (diff) | |
download | busybox-5c23f2566c1d26c62024cc2c78ca5aad4c99dd33.zip busybox-5c23f2566c1d26c62024cc2c78ca5aad4c99dd33.tar.gz |
Apply post-1.24.0 patches, bump version to 1.24.11_24_1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'networking/ftpd.c')
-rw-r--r-- | networking/ftpd.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/networking/ftpd.c b/networking/ftpd.c index 7735b72..8345ae6 100644 --- a/networking/ftpd.c +++ b/networking/ftpd.c @@ -1223,11 +1223,26 @@ int ftpd_main(int argc UNUSED_PARAM, char **argv) #endif argv += optind; if (argv[0]) { + const char *basedir = argv[0]; #if !BB_MMU G.root_fd = xopen("/", O_RDONLY | O_DIRECTORY); close_on_exec_on(G.root_fd); #endif - xchroot(argv[0]); + if (chroot(basedir) == 0) + basedir = "/"; +#if !BB_MMU + else { + close(G.root_fd); + G.root_fd = -1; + } +#endif + /* + * If chroot failed, assume that we aren't root, + * and at least chdir to the specified DIR + * (older versions were dying with error message). + * If chroot worked, move current dir to new "/": + */ + xchdir(basedir); } #if ENABLE_FEATURE_FTP_AUTHENTICATION |