Skip to content

Commit c288414

Browse files
committed
add test offset of a field
1 parent 79666c8 commit c288414

File tree

2 files changed

+52
-38
lines changed

2 files changed

+52
-38
lines changed

src/test/ui/lint/lint-deref-nullptr.rs

+17-9
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,37 @@
22

33
#![deny(deref_nullptr)]
44

5+
use std::ptr;
6+
7+
struct Struct {
8+
field: u8,
9+
}
10+
511
fn f() {
612
unsafe {
713
let a = 1;
814
let ub = *(a as *const i32);
915
let ub = *(0 as *const i32);
1016
//~^ ERROR dereferencing a null pointer
11-
let ub = *core::ptr::null::<i32>();
17+
let ub = *ptr::null::<i32>();
18+
//~^ ERROR dereferencing a null pointer
19+
let ub = *ptr::null_mut::<i32>();
1220
//~^ ERROR dereferencing a null pointer
13-
let ub = *core::ptr::null_mut::<i32>();
21+
let ub = *(ptr::null::<i16>() as *const i32);
1422
//~^ ERROR dereferencing a null pointer
15-
let ub = *(core::ptr::null::<i16>() as *const i32);
23+
let ub = *(ptr::null::<i16>() as *mut i32 as *mut usize as *const u8);
1624
//~^ ERROR dereferencing a null pointer
17-
let ub = *(core::ptr::null::<i16>() as *mut i32 as *mut usize as *const u8);
25+
let ub = &*ptr::null::<i32>();
1826
//~^ ERROR dereferencing a null pointer
19-
let ub = &*core::ptr::null::<i32>();
27+
ptr::addr_of!(*ptr::null::<i32>());
2028
//~^ ERROR dereferencing a null pointer
21-
core::ptr::addr_of!(*core::ptr::null::<i32>());
29+
ptr::addr_of_mut!(*ptr::null_mut::<i32>());
2230
//~^ ERROR dereferencing a null pointer
23-
std::ptr::addr_of_mut!(*core::ptr::null_mut::<i32>());
31+
let ub = *ptr::null::<i32>();
2432
//~^ ERROR dereferencing a null pointer
25-
let ub = *std::ptr::null::<i32>();
33+
let ub = *ptr::null_mut::<i32>();
2634
//~^ ERROR dereferencing a null pointer
27-
let ub = *std::ptr::null_mut::<i32>();
35+
let offset = ptr::addr_of!((*ptr::null::<Struct>()).field);
2836
//~^ ERROR dereferencing a null pointer
2937
}
3038
}
+35-29
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error: dereferencing a null pointer
2-
--> $DIR/lint-deref-nullptr.rs:9:18
2+
--> $DIR/lint-deref-nullptr.rs:15:18
33
|
44
LL | let ub = *(0 as *const i32);
55
| ^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
@@ -11,58 +11,64 @@ LL | #![deny(deref_nullptr)]
1111
| ^^^^^^^^^^^^^
1212

1313
error: dereferencing a null pointer
14-
--> $DIR/lint-deref-nullptr.rs:11:18
14+
--> $DIR/lint-deref-nullptr.rs:17:18
1515
|
16-
LL | let ub = *core::ptr::null::<i32>();
17-
| ^^^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
16+
LL | let ub = *ptr::null::<i32>();
17+
| ^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
1818

1919
error: dereferencing a null pointer
20-
--> $DIR/lint-deref-nullptr.rs:13:18
20+
--> $DIR/lint-deref-nullptr.rs:19:18
2121
|
22-
LL | let ub = *core::ptr::null_mut::<i32>();
23-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
22+
LL | let ub = *ptr::null_mut::<i32>();
23+
| ^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
2424

2525
error: dereferencing a null pointer
26-
--> $DIR/lint-deref-nullptr.rs:15:18
26+
--> $DIR/lint-deref-nullptr.rs:21:18
2727
|
28-
LL | let ub = *(core::ptr::null::<i16>() as *const i32);
29-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
28+
LL | let ub = *(ptr::null::<i16>() as *const i32);
29+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
3030

3131
error: dereferencing a null pointer
32-
--> $DIR/lint-deref-nullptr.rs:17:18
32+
--> $DIR/lint-deref-nullptr.rs:23:18
33+
|
34+
LL | let ub = *(ptr::null::<i16>() as *mut i32 as *mut usize as *const u8);
35+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
36+
37+
error: dereferencing a null pointer
38+
--> $DIR/lint-deref-nullptr.rs:25:19
3339
|
34-
LL | let ub = *(core::ptr::null::<i16>() as *mut i32 as *mut usize as *const u8);
35-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
40+
LL | let ub = &*ptr::null::<i32>();
41+
| ^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
3642

3743
error: dereferencing a null pointer
38-
--> $DIR/lint-deref-nullptr.rs:19:19
44+
--> $DIR/lint-deref-nullptr.rs:27:23
3945
|
40-
LL | let ub = &*core::ptr::null::<i32>();
41-
| ^^^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
46+
LL | ptr::addr_of!(*ptr::null::<i32>());
47+
| ^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
4248

4349
error: dereferencing a null pointer
44-
--> $DIR/lint-deref-nullptr.rs:21:29
50+
--> $DIR/lint-deref-nullptr.rs:29:27
4551
|
46-
LL | core::ptr::addr_of!(*core::ptr::null::<i32>());
47-
| ^^^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
52+
LL | ptr::addr_of_mut!(*ptr::null_mut::<i32>());
53+
| ^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
4854

4955
error: dereferencing a null pointer
50-
--> $DIR/lint-deref-nullptr.rs:23:32
56+
--> $DIR/lint-deref-nullptr.rs:31:18
5157
|
52-
LL | std::ptr::addr_of_mut!(*core::ptr::null_mut::<i32>());
53-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
58+
LL | let ub = *ptr::null::<i32>();
59+
| ^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
5460

5561
error: dereferencing a null pointer
56-
--> $DIR/lint-deref-nullptr.rs:25:18
62+
--> $DIR/lint-deref-nullptr.rs:33:18
5763
|
58-
LL | let ub = *std::ptr::null::<i32>();
59-
| ^^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
64+
LL | let ub = *ptr::null_mut::<i32>();
65+
| ^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
6066

6167
error: dereferencing a null pointer
62-
--> $DIR/lint-deref-nullptr.rs:27:18
68+
--> $DIR/lint-deref-nullptr.rs:35:36
6369
|
64-
LL | let ub = *std::ptr::null_mut::<i32>();
65-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
70+
LL | let offset = ptr::addr_of!((*ptr::null::<Struct>()).field);
71+
| ^^^^^^^^^^^^^^^^^^^^^^^^ this code causes undefined behavior when executed
6672

67-
error: aborting due to 10 previous errors
73+
error: aborting due to 11 previous errors
6874

0 commit comments

Comments
 (0)