make sure that StorageDead invalidates the backing store

This commit is contained in:
Ralf Jung 2018-07-31 20:27:36 +02:00
parent c2670bfdd8
commit 1538b36c80

View File

@ -0,0 +1,20 @@
static mut LEAK: usize = 0;
fn fill(v: &mut i32) {
unsafe { LEAK = v as *mut _ as usize; }
}
fn evil() {
let v = unsafe { &mut *(LEAK as *mut i32) };
let _x = *v; //~ ERROR dangling pointer was dereferenced
}
fn main() {
let _y;
{
let mut x = 0i32;
fill(&mut x);
_y = x;
}
evil();
}