]> git.lizzy.rs Git - rust.git/commitdiff
Exclude env vars using flag
authorChristian Poveda <christianpoveda@protonmail.com>
Wed, 28 Aug 2019 22:31:57 +0000 (17:31 -0500)
committerChristian Poveda <christianpoveda@protonmail.com>
Wed, 28 Aug 2019 22:57:41 +0000 (17:57 -0500)
src/eval.rs
src/shims/env.rs

index 463f21d30ec7a9336b7e2c0fd216f7f80722a055..e44fdfd141696ced12d10e449c868c1125d86a2b 100644 (file)
@@ -42,7 +42,7 @@ pub fn create_ecx<'mir, 'tcx: 'mir>(
         MemoryExtra::new(StdRng::seed_from_u64(config.seed.unwrap_or(0)), config.validate),
     );
     // Complete initialization.
-    EnvVars::init(&mut ecx);
+    EnvVars::init(&mut ecx, config.excluded_env_vars);
 
     // Setup first stack-frame
     let main_instance = ty::Instance::mono(ecx.tcx.tcx, main_id);
index 8f946a2b5eb10a9538c193723de0c053af06c8d1..5a5dffa1d09b04b1a48fee875b6e95188c9f6e0e 100644 (file)
@@ -15,11 +15,14 @@ pub struct EnvVars {
 impl EnvVars {
     pub(crate) fn init<'mir, 'tcx>(
         ecx: &mut InterpCx<'mir, 'tcx, Evaluator<'tcx>>,
+        excluded_env_vars: Vec<String>,
     ) {
         if ecx.machine.communicate {
             for (name, value) in std::env::vars() {
-                let var_ptr = alloc_env_var(name.as_bytes(), value.as_bytes(), ecx.memory_mut());
-                ecx.machine.env_vars.map.insert(name.into_bytes(), var_ptr);
+                if !excluded_env_vars.contains(&name) {
+                    let var_ptr = alloc_env_var(name.as_bytes(), value.as_bytes(), ecx.memory_mut());
+                    ecx.machine.env_vars.map.insert(name.into_bytes(), var_ptr);
+                }
             }
         }
     }