summaryrefslogtreecommitdiff
path: root/runtime/ops/os.rs
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/ops/os.rs')
-rw-r--r--runtime/ops/os.rs30
1 files changed, 24 insertions, 6 deletions
diff --git a/runtime/ops/os.rs b/runtime/ops/os.rs
index 21a94b0fb..70d429839 100644
--- a/runtime/ops/os.rs
+++ b/runtime/ops/os.rs
@@ -80,10 +80,20 @@ fn op_set_env(
value: String,
) -> Result<(), AnyError> {
state.borrow_mut::<Permissions>().env.check(&key)?;
- let invalid_key = key.is_empty() || key.contains(&['=', '\0'] as &[char]);
- let invalid_value = value.contains('\0');
- if invalid_key || invalid_value {
- return Err(type_error("Key or value contains invalid characters."));
+ if key.is_empty() {
+ return Err(type_error("Key is an empty string."));
+ }
+ if key.contains(&['=', '\0'] as &[char]) {
+ return Err(type_error(format!(
+ "Key contains invalid characters: {:?}",
+ key
+ )));
+ }
+ if value.contains('\0') {
+ return Err(type_error(format!(
+ "Value contains invalid characters: {:?}",
+ value
+ )));
}
env::set_var(key, value);
Ok(())
@@ -108,9 +118,17 @@ fn op_get_env(
state.borrow_mut::<Permissions>().env.check(&key)?;
}
- if key.is_empty() || key.contains(&['=', '\0'] as &[char]) {
- return Err(type_error("Key contains invalid characters."));
+ if key.is_empty() {
+ return Err(type_error("Key is an empty string."));
}
+
+ if key.contains(&['=', '\0'] as &[char]) {
+ return Err(type_error(format!(
+ "Key contains invalid characters: {:?}",
+ key
+ )));
+ }
+
let r = match env::var(key) {
Err(env::VarError::NotPresent) => None,
v => Some(v?),