rust/tests/compile-fail/environ-gets-deallocated.rs

25 lines
634 B
Rust
Raw Normal View History

2020-06-28 04:31:34 -05:00
// ignore-windows: Windows does not have a global environ list that the program can access directly
2020-03-07 10:35:00 -06:00
#[cfg(target_os="linux")]
fn get_environ() -> *const *const u8 {
extern "C" {
2020-03-07 14:33:27 -06:00
static mut environ: *const *const u8;
2020-03-07 10:35:00 -06:00
}
2020-03-07 14:33:27 -06:00
unsafe { environ }
2020-03-07 10:35:00 -06:00
}
#[cfg(target_os="macos")]
fn get_environ() -> *const *const u8 {
extern "C" {
fn _NSGetEnviron() -> *mut *const *const u8;
}
unsafe { *_NSGetEnviron() }
}
fn main() {
2020-03-07 10:35:00 -06:00
let pointer = get_environ();
let _x = unsafe { *pointer };
std::env::set_var("FOO", "BAR");
2020-03-08 17:34:54 -05:00
let _y = unsafe { *pointer }; //~ ERROR dereferenced after this allocation got freed
}