AFLplusplus / AFLplusplus/LibAFL
`ShMem` should not give out references, pt. 2
- Lingua principale
- Rust
- Stelle
- 2.6k
- Fork
- 481
- Merge medio
- 2g 30m
- PR unite (30g)
- 16
Descrizione
You can recreate #1748 with [the `impl DerefMut` for `MmapShMem`](https://docs.rs/libafl_bolts/0.14.1/libafl_bolts/shmem/unix_shmem/struct.MmapShMem.html#impl-DerefMut-for-MmapShMem).
```rust
// cargo init
// cargo add --no-default-features --features=std --git https://github.com/AFLplusplus/LibAFL libafl_bolts
// cargo run
use std::ops::{DerefMut as _};
use libafl_bolts::shmem::{ShMemProvider as _};
pub fn main() {
let mut prov = libafl_bolts::shmem::MmapShMemProvider::default();
let mut shmem1 = unsafe { prov.new_on_shmem::(0).unwrap_unchecked() };
let mut shmem2 = unsafe { prov.clone_ref(&shmem1).unwrap_unchecked() };
let r1 = &mut shmem1.deref_mut()[0];
let r2 = &mut shmem2.deref_mut()[0];
go(r1, r2);
}
pub fn go(r1: &mut u8, r2: &mut u8) {
mut_r1(r1);
mut_r2(r2);
if *r1 == 1 {
println!("r1 = {r1}");
}
}
pub fn mut_r1(r1: &mut u8) {
*r1 = 1;
}
pub fn mut_r2(r2: &mut u8) {
*r2 = 32;
}
```
Prints
```
r1 = 32
```
Guida per i contributori
Apri la guida per i contributori
Valutazione
Questa issue non è ancora stata valutata.