From: Ralf Jung Date: Thu, 10 Mar 2022 23:56:19 +0000 (-0500) Subject: add ptr_offset_from OOB test, and update test errors X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=bae720c75b10faf78ebe387bb51c2547daebd34b;p=rust.git add ptr_offset_from OOB test, and update test errors --- diff --git a/tests/compile-fail/intrinsics/copy_null.rs b/tests/compile-fail/intrinsics/copy_null.rs index 60cb7e4eff5..8f32ad1a760 100644 --- a/tests/compile-fail/intrinsics/copy_null.rs +++ b/tests/compile-fail/intrinsics/copy_null.rs @@ -9,5 +9,5 @@ fn main() { let mut data = [0u16; 4]; let ptr = &mut data[0] as *mut u16; // Even copying 0 elements from NULL should error. - unsafe { copy_nonoverlapping(std::ptr::null(), ptr, 0); } //~ ERROR: memory access failed: 0x0 is not a valid pointer + unsafe { copy_nonoverlapping(std::ptr::null(), ptr, 0); } //~ ERROR: memory access failed: null pointer is not a valid pointer } diff --git a/tests/compile-fail/intrinsics/ptr_offset_0_plus_0.rs b/tests/compile-fail/intrinsics/ptr_offset_0_plus_0.rs index d8a8f66e7ae..248d85d65e2 100644 --- a/tests/compile-fail/intrinsics/ptr_offset_0_plus_0.rs +++ b/tests/compile-fail/intrinsics/ptr_offset_0_plus_0.rs @@ -1,4 +1,4 @@ -// error-pattern: pointer arithmetic failed: 0x0 is not a valid pointer +// error-pattern: pointer arithmetic failed: null pointer is not a valid pointer fn main() { let x = 0 as *mut i32; diff --git a/tests/compile-fail/intrinsics/ptr_offset_from_oob.rs b/tests/compile-fail/intrinsics/ptr_offset_from_oob.rs new file mode 100644 index 00000000000..ef1ca1e2729 --- /dev/null +++ b/tests/compile-fail/intrinsics/ptr_offset_from_oob.rs @@ -0,0 +1,11 @@ +#![feature(core_intrinsics)] + +use std::intrinsics::ptr_offset_from; + +fn main() { + let start_ptr = &4 as *const _ as *const u8; + let length = 10; + let end_ptr = start_ptr.wrapping_add(length); + // Even if the offset is 0, a dangling OOB pointer is not allowed. + unsafe { ptr_offset_from(end_ptr, end_ptr) }; //~ERROR pointer at offset 10 is out-of-bounds +} diff --git a/tests/compile-fail/intrinsics/write_bytes_null.rs b/tests/compile-fail/intrinsics/write_bytes_null.rs index c3f77b27b4f..60966f0a94c 100644 --- a/tests/compile-fail/intrinsics/write_bytes_null.rs +++ b/tests/compile-fail/intrinsics/write_bytes_null.rs @@ -6,5 +6,5 @@ } fn main() { - unsafe { write_bytes::(std::ptr::null_mut(), 0, 0) }; //~ ERROR memory access failed: 0x0 is not a valid pointer + unsafe { write_bytes::(std::ptr::null_mut(), 0, 0) }; //~ ERROR memory access failed: null pointer is not a valid pointer } diff --git a/tests/compile-fail/null_pointer_deref_zst.rs b/tests/compile-fail/null_pointer_deref_zst.rs index 04617c58f3c..f3830c078e5 100644 --- a/tests/compile-fail/null_pointer_deref_zst.rs +++ b/tests/compile-fail/null_pointer_deref_zst.rs @@ -3,6 +3,6 @@ #[allow(deref_nullptr)] fn main() { - let x: () = unsafe { *std::ptr::null() }; //~ ERROR dereferencing pointer failed: 0x0 is not a valid pointer + let x: () = unsafe { *std::ptr::null() }; //~ ERROR dereferencing pointer failed: null pointer is not a valid pointer panic!("this should never print: {:?}", x); } diff --git a/tests/compile-fail/null_pointer_write_zst.rs b/tests/compile-fail/null_pointer_write_zst.rs index 46a8345b1b4..63474d96517 100644 --- a/tests/compile-fail/null_pointer_write_zst.rs +++ b/tests/compile-fail/null_pointer_write_zst.rs @@ -1,6 +1,6 @@ // Some optimizations remove ZST accesses, thus masking this UB. // compile-flags: -Zmir-opt-level=0 -// error-pattern: memory access failed: 0x0 is not a valid pointer +// error-pattern: memory access failed: null pointer is not a valid pointer #[allow(deref_nullptr)] fn main() {