From 1538b36c8042f22f7c3fe191016c8469991c1c89 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Tue, 31 Jul 2018 20:27:36 +0200 Subject: [PATCH] make sure that StorageDead invalidates the backing store --- tests/compile-fail/storage_dead_dangling.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 tests/compile-fail/storage_dead_dangling.rs diff --git a/tests/compile-fail/storage_dead_dangling.rs b/tests/compile-fail/storage_dead_dangling.rs new file mode 100644 index 00000000000..6abae2069fc --- /dev/null +++ b/tests/compile-fail/storage_dead_dangling.rs @@ -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(); +}