]> git.lizzy.rs Git - rust.git/commitdiff
Make sure we notice when a u16 is loaded at offset 1 into a u8 allocation
authorRalf Jung <post@ralfj.de>
Wed, 2 Mar 2022 18:06:28 +0000 (13:06 -0500)
committerRalf Jung <post@ralfj.de>
Wed, 2 Mar 2022 18:06:28 +0000 (13:06 -0500)
tests/compile-fail/unaligned_pointers/unaligned_ptr4.rs [new file with mode: 0644]

diff --git a/tests/compile-fail/unaligned_pointers/unaligned_ptr4.rs b/tests/compile-fail/unaligned_pointers/unaligned_ptr4.rs
new file mode 100644 (file)
index 0000000..1076674
--- /dev/null
@@ -0,0 +1,12 @@
+// This should fail even without validation or Stacked Borrows.
+// compile-flags: -Zmiri-disable-validation -Zmiri-disable-stacked-borrows
+
+fn main() {
+    // Make sure we notice when a u16 is loaded at offset 1 into a u8 allocation.
+    // (This would be missed if u8 allocations are *always* at odd addresses.)
+    for _ in 0..10 { // Try many times as this might work by chance.
+        let x = [0u8; 4];
+        let ptr = x.as_ptr().wrapping_offset(1).cast::<u16>();
+        let _val = unsafe { *ptr }; //~ERROR but alignment
+    }
+}