fix: filter inherited env vars overridden by per-session envExtra

Prevents the agent from using the user's global OLLIE mount to
bypass per-session permission enforcement.
This commit is contained in:
Levi Neely 2026-05-19 15:45:00 +02:00
parent ccacdc4ec8
commit 97d14f1100
1 changed files with 10 additions and 1 deletions

View File

@ -578,7 +578,16 @@ func (e *Server) executeWithStdin(ctx context.Context, code, language string, ti
}
e.envMu.RLock()
cmd.Env = prependOlliePath(os.Environ())
baseEnv := os.Environ()
// Remove keys that envExtra overrides so duplicates don't leak through.
filtered := baseEnv[:0]
for _, ev := range baseEnv {
k, _, _ := strings.Cut(ev, "=")
if _, overridden := e.envExtra[k]; !overridden {
filtered = append(filtered, ev)
}
}
cmd.Env = prependOlliePath(filtered)
cmd.Env = append(cmd.Env, "OLLIE_TOOLS_PATH="+ToolsPath())
for k, v := range e.envExtra {
cmd.Env = append(cmd.Env, k+"="+v)