add ptr_offset_from OOB test, and update test errors
This commit is contained in:
parent
a35877b5f1
commit
bae720c75b
@ -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
|
||||
}
|
||||
|
@ -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;
|
||||
|
11
tests/compile-fail/intrinsics/ptr_offset_from_oob.rs
Normal file
11
tests/compile-fail/intrinsics/ptr_offset_from_oob.rs
Normal file
@ -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
|
||||
}
|
@ -6,5 +6,5 @@ extern "rust-intrinsic" {
|
||||
}
|
||||
|
||||
fn main() {
|
||||
unsafe { write_bytes::<u8>(std::ptr::null_mut(), 0, 0) }; //~ ERROR memory access failed: 0x0 is not a valid pointer
|
||||
unsafe { write_bytes::<u8>(std::ptr::null_mut(), 0, 0) }; //~ ERROR memory access failed: null pointer is not a valid pointer
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user