From a29f86b512a0a6a353c11f44af768da6bdc5c782 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sat, 20 Jun 2020 14:28:55 +0200 Subject: [PATCH] make sure '&raw *' on a dangling raw ptr is UB --- .../dangling_pointers/dangling_pointer_addr_of.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 tests/compile-fail/dangling_pointers/dangling_pointer_addr_of.rs diff --git a/tests/compile-fail/dangling_pointers/dangling_pointer_addr_of.rs b/tests/compile-fail/dangling_pointers/dangling_pointer_addr_of.rs new file mode 100644 index 00000000000..5df5b324f45 --- /dev/null +++ b/tests/compile-fail/dangling_pointers/dangling_pointer_addr_of.rs @@ -0,0 +1,13 @@ +// Make sure we find these even with many checks disabled. +// compile-flags: -Zmiri-disable-alignment-check -Zmiri-disable-stacked-borrows -Zmiri-disable-validation +#![feature(raw_ref_macros)] +use std::ptr; + +fn main() { + let p = { + let b = Box::new(42); + &*b as *const i32 + }; + let x = unsafe { ptr::raw_const!(*p) }; //~ ERROR dereferenced after this allocation got freed + panic!("this should never print: {:?}", x); +} -- 2.44.0