diff --git a/rust-version b/rust-version index de3e19e6b0..a4c6cd4418 100644 --- a/rust-version +++ b/rust-version @@ -1 +1 @@ -89adcc636f94d34a6fc90fa117e28ddf6be7b983 +2c6a29af35a81e20f8af4c32bf1b55c59b89eccd diff --git a/tests/compile-fail/intrinsics/copy_null.rs b/tests/compile-fail/intrinsics/copy_null.rs index 60cb7e4eff..8f32ad1a76 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 d8a8f66e7a..248d85d65e 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 0000000000..ef1ca1e272 --- /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 c3f77b27b4..60966f0a94 100644 --- a/tests/compile-fail/intrinsics/write_bytes_null.rs +++ b/tests/compile-fail/intrinsics/write_bytes_null.rs @@ -6,5 +6,5 @@ extern "rust-intrinsic" { } 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 04617c58f3..f3830c078e 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 46a8345b1b..63474d9651 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() {