rust/tests/fail/pointer_partial_overwrite.rs

18 lines
712 B
Rust
Raw Normal View History

// Make sure we find these even with many checks disabled.
2022-07-08 11:08:32 -05:00
//@compile-flags: -Zmiri-disable-alignment-check -Zmiri-disable-stacked-borrows -Zmiri-disable-validation
// Test what happens when we overwrite parts of a pointer.
2022-06-03 07:46:22 -05:00
// Also see <https://github.com/rust-lang/miri/issues/2181>.
fn main() {
let mut p = &42;
unsafe {
let ptr: *mut _ = &mut p;
*(ptr as *mut u8) = 123; // if we ever support 8 bit pointers, this is gonna cause
// "attempted to interpret some raw bytes as a pointer address" instead of
// "attempted to read undefined bytes"
}
let x = *p; //~ ERROR: this operation requires initialized memory
panic!("this should never print: {}", x);
}