$NetBSD: patch-ao,v 1.13 2009/05/21 03:22:29 taca Exp $ One more replacing 0 with ROOTUID is handled by using SUBST framework because patch can't handle it when hpn-patch option is enabled. So, don't simply update this file with mkpatch command. --- session.c.orig 2009-01-28 14:29:49.000000000 +0900 +++ session.c @@ -1068,7 +1068,7 @@ read_etc_default_login(char ***env, u_in if (tmpenv == NULL) return; - if (uid == 0) + if (uid == ROOTUID) var = child_get_env(tmpenv, "SUPATH"); else var = child_get_env(tmpenv, "PATH"); @@ -1177,7 +1177,7 @@ do_setup_env(Session *s, const char *she # endif /* HAVE_ETC_DEFAULT_LOGIN */ if (path == NULL || *path == '\0') { child_set_env(&env, &envsize, "PATH", - s->pw->pw_uid == 0 ? + s->pw->pw_uid == ROOTUID ? SUPERUSER_PATH : _PATH_STDPATH); } # endif /* HAVE_CYGWIN */ @@ -1291,6 +1291,18 @@ do_setup_env(Session *s, const char *she strcmp(pw->pw_dir, "/") ? pw->pw_dir : ""); read_environment_file(&env, &envsize, buf); } + +#ifdef HAVE_INTERIX + { + /* copy standard Windows environment, then apply changes */ + env_t *winenv = env_login(pw); + env_putarray(winenv, env, ENV_OVERRIDE); + + /* swap over to altered environment as a traditional array */ + env = env_array(winenv); + } +#endif + if (debug_flag) { /* dump the environment */ fprintf(stderr, "Environment:\n"); @@ -1464,9 +1476,9 @@ do_setusercontext(struct passwd *pw) (void)ssh_selinux_enabled(); #endif -#ifndef HAVE_CYGWIN +#if !defined(HAVE_CYGWIN) && !defined(HAVE_INTERIX) if (getuid() == 0 || geteuid() == 0) -#endif /* HAVE_CYGWIN */ +#endif /* !HAVE_CYGWIN && !HAVE_INTERIX */ { #ifdef HAVE_SETPCRED @@ -1500,11 +1512,13 @@ do_setusercontext(struct passwd *pw) perror("setgid"); exit(1); } +# if !defined(HAVE_INTERIX) /* Initialize the group list. */ if (initgroups(pw->pw_name, pw->pw_gid) < 0) { perror("initgroups"); exit(1); } +# endif /* !HAVE_INTERIX */ endgrent(); # ifdef USE_PAM /* @@ -2328,7 +2342,7 @@ session_pty_cleanup2(Session *s) record_logout(s->pid, s->tty, s->pw->pw_name); /* Release the pseudo-tty. */ - if (getuid() == 0) + if (getuid() == ROOTUID) pty_release(s->tty); /*