=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/session.c,v retrieving revision 1.299 retrieving revision 1.300 diff -u -r1.299 -r1.300 --- src/usr.bin/ssh/session.c 2018/06/09 02:58:02 1.299 +++ src/usr.bin/ssh/session.c 2018/06/09 03:03:10 1.300 @@ -1,4 +1,4 @@ -/* $OpenBSD: session.c,v 1.299 2018/06/09 02:58:02 djm Exp $ */ +/* $OpenBSD: session.c,v 1.300 2018/06/09 03:03:10 djm Exp $ */ /* * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland * All rights reserved @@ -826,7 +826,7 @@ char buf[256]; size_t n; u_int i, envsize; - char *ocp, *cp, **env, *laddr; + char *ocp, *cp, *value, **env, *laddr; struct passwd *pw = s->pw; /* Initialize the environment. */ @@ -893,6 +893,17 @@ snprintf(buf, sizeof buf, "%.200s/.ssh/environment", pw->pw_dir); read_environment_file(&env, &envsize, buf); + } + + /* Environment specified by admin */ + for (i = 0; i < options.num_setenv; i++) { + cp = xstrdup(options.setenv[i]); + if ((value = strchr(cp, '=')) == NULL) { + /* shouldn't happen; vars are checked in servconf.c */ + fatal("Invalid config SetEnv: %s", options.setenv[i]); + } + *value++ = '\0'; + child_set_env(&env, &envsize, cp, value); } /* SSH_CLIENT deprecated */