Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/mm/kasan/kasan_test_rust.rs
26282 views
1
// SPDX-License-Identifier: GPL-2.0
2
3
//! Helper crate for KASAN testing.
4
//!
5
//! Provides behavior to check the sanitization of Rust code.
6
7
use core::ptr::addr_of_mut;
8
use kernel::prelude::*;
9
10
/// Trivial UAF - allocate a big vector, grab a pointer partway through,
11
/// drop the vector, and touch it.
12
#[no_mangle]
13
pub extern "C" fn kasan_test_rust_uaf() -> u8 {
14
let mut v: KVec<u8> = KVec::new();
15
for _ in 0..4096 {
16
v.push(0x42, GFP_KERNEL).unwrap();
17
}
18
let ptr: *mut u8 = addr_of_mut!(v[2048]);
19
drop(v);
20
// SAFETY: Incorrect, on purpose.
21
unsafe { *ptr }
22
}
23
24