Do not pass non-string env vars to externals (#4748)

* Do not pass non-string env vars to externals

Also misc cleanup

* Add note to default config

* Add a test

* Ensure PATH/Path conversion list <-> string
This commit is contained in:
Jakub Žádník
2022-03-12 00:18:39 +02:00
committed by GitHub
parent f3626f7c3a
commit 90b2ec537f
9 changed files with 154 additions and 44 deletions

View File

@ -76,8 +76,7 @@ fn exec(
let args: Vec<Spanned<String>> = call.rest(engine_state, stack, 1)?;
let cwd = current_dir(engine_state, stack)?;
let config = stack.get_config()?;
let env_vars = env_to_strings(engine_state, stack, &config)?;
let env_vars = env_to_strings(engine_state, stack)?;
let current_dir = current_dir(engine_state, stack)?;
let external_command = ExternalCommand {

View File

@ -55,8 +55,7 @@ impl Command for External {
let redirect_stderr = call.has_flag("redirect-stderr");
// Translate environment variables from Values to Strings
let config = stack.get_config().unwrap_or_default();
let env_vars_str = env_to_strings(engine_state, stack, &config)?;
let env_vars_str = env_to_strings(engine_state, stack)?;
fn value_as_spanned(value: Value) -> Result<Spanned<String>, ShellError> {
let span = value.span()?;