|
| 1 | +#![allow(deprecated)] |
| 2 | + |
| 3 | +fn sink<T>(_: T) { } |
| 4 | + |
| 5 | +// --- tests --- |
| 6 | + |
| 7 | +fn test_env_vars() { |
| 8 | + sink(std::env::var("HOME")); // $ MISSING: Alert[rust/summary/taint-sources] hasTaintFlow |
| 9 | + sink(std::env::var_os("PATH")); // $ MISSING: Alert[rust/summary/taint-sources] hasTaintFlow |
| 10 | + |
| 11 | + let var1 = std::env::var("HOME").expect("HOME not set"); // $ MISSING: Alert[rust/summary/taint-sources] |
| 12 | + let var2 = std::env::var_os("PATH").unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] |
| 13 | + |
| 14 | + sink(var1); // $ MISSING: hasTaintFlow |
| 15 | + sink(var2); // $ MISSING: hasTaintFlow |
| 16 | + |
| 17 | + for (key, value) in std::env::vars() { // $ MISSING: Alert[rust/summary/taint-sources] |
| 18 | + sink(key); // $ MISSING: hasTaintFlow |
| 19 | + sink(value); // $ MISSING: hasTaintFlow |
| 20 | + } |
| 21 | + |
| 22 | + for (key, value) in std::env::vars_os() { // $ MISSING: Alert[rust/summary/taint-sources] |
| 23 | + sink(key); // $ MISSING: hasTaintFlow |
| 24 | + sink(value); // $ MISSING: hasTaintFlow |
| 25 | + } |
| 26 | +} |
| 27 | + |
| 28 | +fn test_env_args() { |
| 29 | + let args: Vec<String> = std::env::args().collect(); // $ MISSING: Alert[rust/summary/taint-sources] |
| 30 | + let my_path = &args[0]; |
| 31 | + let arg1 = &args[1]; |
| 32 | + let arg2 = std::env::args().nth(2).unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] |
| 33 | + let arg3 = std::env::args_os().nth(3).unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] |
| 34 | + |
| 35 | + sink(my_path); // $ MISSING: hasTaintFlow |
| 36 | + sink(arg1); // $ MISSING: hasTaintFlow |
| 37 | + sink(arg2); // $ MISSING: hasTaintFlow |
| 38 | + sink(arg3); // $ MISSING: hasTaintFlow |
| 39 | + |
| 40 | + for arg in std::env::args() { // $ MISSING: Alert[rust/summary/taint-sources] |
| 41 | + sink(arg); // $ MISSING: hasTaintFlow |
| 42 | + } |
| 43 | + |
| 44 | + for arg in std::env::args_os() { // $ MISSING: Alert[rust/summary/taint-sources] |
| 45 | + sink(arg); // $ MISSING: hasTaintFlow |
| 46 | + } |
| 47 | +} |
| 48 | + |
| 49 | +fn test_env_dirs() { |
| 50 | + let dir = std::env::current_dir().expect("FAILED"); // $ MISSING: Alert[rust/summary/taint-sources] |
| 51 | + let exe = std::env::current_exe().expect("FAILED"); // $ MISSING: Alert[rust/summary/taint-sources] |
| 52 | + let home = std::env::home_dir().expect("FAILED"); // $ MISSING: Alert[rust/summary/taint-sources] |
| 53 | + |
| 54 | + sink(dir); // $ MISSING: hasTaintFlow |
| 55 | + sink(exe); // $ MISSING: hasTaintFlow |
| 56 | + sink(home); // $ MISSING: hasTaintFlow |
| 57 | +} |
| 58 | + |
| 59 | +async fn test_reqwest() -> Result<(), reqwest::Error> { |
| 60 | + let remote_string1 = reqwest::blocking::get("http://example.com/")?.text()?; // $ MISSING: Alert[rust/summary/taint-sources] |
| 61 | + sink(remote_string1); // $ MISSING: hasTaintFlow |
| 62 | + |
| 63 | + let remote_string2 = reqwest::blocking::get("http://example.com/").unwrap().text().unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] |
| 64 | + sink(remote_string2); // $ MISSING: hasTaintFlow |
| 65 | + |
| 66 | + let remote_string3 = reqwest::get("http://example.com/").await?.text().await?; // $ MISSING: Alert[rust/summary/taint-sources] |
| 67 | + sink(remote_string3); // $ MISSING: hasTaintFlow |
| 68 | + |
| 69 | + Ok(()) |
| 70 | +} |
0 commit comments