|
|
@@ -220,7 +220,11 @@ func (ss *sshSession) launchProcess() error {
|
|
|
cmd := ss.cmd
|
|
|
cmd.Dir = ss.conn.localUser.HomeDir
|
|
|
cmd.Env = append(cmd.Env, envForUser(ss.conn.localUser)...)
|
|
|
- cmd.Env = append(cmd.Env, ss.Environ()...)
|
|
|
+ for _, kv := range ss.Environ() {
|
|
|
+ if acceptEnvPair(kv) {
|
|
|
+ cmd.Env = append(cmd.Env, kv)
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
ci := ss.conn.info
|
|
|
cmd.Env = append(cmd.Env,
|
|
|
@@ -493,3 +497,14 @@ func updateStringInSlice(ss []string, a, b string) {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+// acceptEnvPair reports whether the environment variable key=value pair
|
|
|
+// should be accepted from the client. It uses the same default as OpenSSH
|
|
|
+// AcceptEnv.
|
|
|
+func acceptEnvPair(kv string) bool {
|
|
|
+ k, _, ok := strings.Cut(kv, "=")
|
|
|
+ if !ok {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ return k == "TERM" || k == "LANG" || strings.HasPrefix(k, "LC_")
|
|
|
+}
|