From 8b59d9f7bc2ce4aa33b6b8ac41495c62d3791f3c Mon Sep 17 00:00:00 2001 From: crowlKats <13135287+crowlKats@users.noreply.github.com> Date: Tue, 13 Apr 2021 13:25:21 +0200 Subject: feat(permissions): allow env permission to take values (#9825) --- runtime/ops/os.rs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'runtime/ops/os.rs') diff --git a/runtime/ops/os.rs b/runtime/ops/os.rs index b9511fcdc..c2c9fb550 100644 --- a/runtime/ops/os.rs +++ b/runtime/ops/os.rs @@ -54,7 +54,7 @@ fn op_set_env( args: SetEnv, _zero_copy: Option, ) -> Result<(), AnyError> { - state.borrow_mut::().env.check()?; + state.borrow_mut::().env.check(&args.key)?; let invalid_key = args.key.is_empty() || args.key.contains(&['=', '\0'] as &[char]); let invalid_value = args.value.contains('\0'); @@ -70,7 +70,7 @@ fn op_env( _args: (), _zero_copy: Option, ) -> Result, AnyError> { - state.borrow_mut::().env.check()?; + state.borrow_mut::().env.check_all()?; Ok(env::vars().collect()) } @@ -79,7 +79,7 @@ fn op_get_env( key: String, _zero_copy: Option, ) -> Result, AnyError> { - state.borrow_mut::().env.check()?; + state.borrow_mut::().env.check(&key)?; if key.is_empty() || key.contains(&['=', '\0'] as &[char]) { return Err(type_error("Key contains invalid characters.")); } @@ -89,12 +89,13 @@ fn op_get_env( }; Ok(r) } + fn op_delete_env( state: &mut OpState, key: String, _zero_copy: Option, ) -> Result<(), AnyError> { - state.borrow_mut::().env.check()?; + state.borrow_mut::().env.check(&key)?; if key.is_empty() || key.contains(&['=', '\0'] as &[char]) { return Err(type_error("Key contains invalid characters.")); } @@ -116,7 +117,7 @@ fn op_loadavg( _zero_copy: Option, ) -> Result<(f64, f64, f64), AnyError> { super::check_unstable(state, "Deno.loadavg"); - state.borrow_mut::().env.check()?; + state.borrow_mut::().env.check_all()?; match sys_info::loadavg() { Ok(loadavg) => Ok((loadavg.one, loadavg.five, loadavg.fifteen)), Err(_) => Ok((0.0, 0.0, 0.0)), @@ -129,7 +130,7 @@ fn op_hostname( _zero_copy: Option, ) -> Result { super::check_unstable(state, "Deno.hostname"); - state.borrow_mut::().env.check()?; + state.borrow_mut::().env.check_all()?; let hostname = sys_info::hostname().unwrap_or_else(|_| "".to_string()); Ok(hostname) } @@ -140,7 +141,7 @@ fn op_os_release( _zero_copy: Option, ) -> Result { super::check_unstable(state, "Deno.osRelease"); - state.borrow_mut::().env.check()?; + state.borrow_mut::().env.check_all()?; let release = sys_info::os_release().unwrap_or_else(|_| "".to_string()); Ok(release) } @@ -164,7 +165,7 @@ fn op_system_memory_info( _zero_copy: Option, ) -> Result, AnyError> { super::check_unstable(state, "Deno.systemMemoryInfo"); - state.borrow_mut::().env.check()?; + state.borrow_mut::().env.check_all()?; match sys_info::mem_info() { Ok(info) => Ok(Some(MemInfo { total: info.total, @@ -191,7 +192,7 @@ fn op_system_cpu_info( _zero_copy: Option, ) -> Result { super::check_unstable(state, "Deno.systemCpuInfo"); - state.borrow_mut::().env.check()?; + state.borrow_mut::().env.check_all()?; let cores = sys_info::cpu_num().ok(); let speed = sys_info::cpu_speed().ok(); -- cgit v1.2.3