wok-stable annotate busybox/stuff/busybox-1.18-su-nochdir.u @ rev 12465

Up e2fsprogs (1.44.2)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon Mar 04 18:42:23 2019 +0100 (2019-03-04)
parents a5fbfa5737a6
children
rev   line source
pascal@12084 1 su should not chdir to home
pascal@12084 2 --- busybox-1.18.4/include/libbb.h
pascal@12084 3 +++ busybox-1.18.4/include/libbb.h
pascal@12084 4 @@ -1213,6 +1213,7 @@
pascal@12084 5 #define SETUP_ENV_CHANGEENV (1 << 0)
pascal@12084 6 #define SETUP_ENV_CLEARENV (1 << 1)
pascal@12084 7 #define SETUP_ENV_TO_TMP (1 << 2)
pascal@12084 8 +#define SETUP_ENV_NO_CHDIR (1 << 4)
pascal@12084 9 extern void setup_environment(const char *shell, int flags, const struct passwd *pw) FAST_FUNC;
pascal@12084 10 extern int correct_password(const struct passwd *pw) FAST_FUNC;
pascal@12084 11 /* Returns a malloced string */
pascal@12084 12
pascal@12084 13 --- busybox-1.18.4/libbb/setup_environment.c
pascal@12084 14 +++ busybox-1.18.4/libbb/setup_environment.c
pascal@12084 15 @@ -34,9 +34,11 @@
pascal@12084 16 {
pascal@12084 17 /* Change the current working directory to be the home directory
pascal@12084 18 * of the user */
pascal@12084 19 - if (chdir(pw->pw_dir)) {
pascal@12084 20 - xchdir((flags & SETUP_ENV_TO_TMP) ? "/tmp" : "/");
pascal@12084 21 - bb_error_msg("can't chdir to home directory '%s'", pw->pw_dir);
pascal@12084 22 + if ((flags & SETUP_ENV_NO_CHDIR) == 0) {
pascal@12084 23 + if (chdir(pw->pw_dir)) {
pascal@12084 24 + xchdir((flags & SETUP_ENV_TO_TMP) ? "/tmp" : "/");
pascal@12084 25 + bb_error_msg("can't chdir to home directory '%s'", pw->pw_dir);
pascal@12084 26 + }
pascal@12084 27 }
pascal@12084 28
pascal@12084 29 if (flags & SETUP_ENV_CLEARENV) {
pascal@12084 30
pascal@12084 31 --- busybox-1.18.4/loginutils/su.c
pascal@12084 32 +++ busybox-1.18.4/loginutils/su.c
pascal@12084 33 @@ -126,7 +126,8 @@
pascal@12084 34 change_identity(pw);
pascal@12084 35 setup_environment(opt_shell,
pascal@12084 36 ((flags & SU_OPT_l) / SU_OPT_l * SETUP_ENV_CLEARENV)
pascal@12084 37 - + (!(flags & SU_OPT_mp) * SETUP_ENV_CHANGEENV),
pascal@12084 38 + + (!(flags & SU_OPT_mp) * SETUP_ENV_CHANGEENV)
pascal@12088 39 + + (!(flags & SU_OPT_l) * SETUP_ENV_NO_CHDIR),
pascal@12084 40 pw);
pascal@12084 41 IF_SELINUX(set_current_security_context(NULL);)
pascal@12084 42