$NetBSD: patch-ao,v 1.17 2011/02/16 17:45:08 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 2011-02-16 01:25:58.000000000 +0000 +++ session.c @@ -1075,7 +1075,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"); @@ -1184,7 +1184,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 */ @@ -1298,6 +1298,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"); @@ -1488,11 +1500,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(); #endif @@ -2305,7 +2319,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); /*