Clippy fixes (#385)
* clippy fixes * added missing use, switched to hashbrown * fix * more clippy
This commit is contained in:
parent
00d38dc535
commit
4d24012245
@ -99,7 +99,7 @@ extern "C" {
|
|||||||
static mut ASAN_INITED: bool = false;
|
static mut ASAN_INITED: bool = false;
|
||||||
|
|
||||||
pub fn init_with_asan(args: &mut Vec<String>, env: &mut [(String, String)]) -> i32 {
|
pub fn init_with_asan(args: &mut Vec<String>, env: &mut [(String, String)]) -> i32 {
|
||||||
assert!(args.len() > 0);
|
assert!(!args.is_empty());
|
||||||
let current = env::current_exe().unwrap();
|
let current = env::current_exe().unwrap();
|
||||||
let asan_lib = fs::canonicalize(¤t)
|
let asan_lib = fs::canonicalize(¤t)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
@ -117,7 +117,7 @@ pub fn init_with_asan(args: &mut Vec<String>, env: &mut [(String, String)]) -> i
|
|||||||
for (k, v) in env.iter_mut() {
|
for (k, v) in env.iter_mut() {
|
||||||
if k == "QEMU_SET_ENV" {
|
if k == "QEMU_SET_ENV" {
|
||||||
let mut new_v = vec![];
|
let mut new_v = vec![];
|
||||||
for e in v.split(",") {
|
for e in v.split(',') {
|
||||||
if e.starts_with("LD_PRELOAD=") {
|
if e.starts_with("LD_PRELOAD=") {
|
||||||
added = true;
|
added = true;
|
||||||
new_v.push(add_asan(e));
|
new_v.push(add_asan(e));
|
||||||
@ -129,11 +129,9 @@ pub fn init_with_asan(args: &mut Vec<String>, env: &mut [(String, String)]) -> i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for i in 0..args.len() {
|
for i in 0..args.len() {
|
||||||
if args[i] == "-E" && i + 1 < args.len() {
|
if args[i] == "-E" && i + 1 < args.len() && args[i + 1].starts_with("LD_PRELOAD=") {
|
||||||
if args[i + 1].starts_with("LD_PRELOAD=") {
|
|
||||||
added = true;
|
added = true;
|
||||||
args[i + 1] = add_asan(&args[i + 1])
|
args[i + 1] = add_asan(&args[i + 1]);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -158,7 +156,7 @@ pub struct QemuAsanHelper {
|
|||||||
impl QemuAsanHelper {
|
impl QemuAsanHelper {
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
assert!(unsafe { ASAN_INITED == true }, "The ASan runtime is not initialized, use init_with_asan(...) instead of just init(...)");
|
assert!(unsafe { ASAN_INITED }, "The ASan runtime is not initialized, use init_with_asan(...) instead of just init(...)");
|
||||||
Self {
|
Self {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
filter: QemuInstrumentationFilter::None,
|
filter: QemuInstrumentationFilter::None,
|
||||||
@ -216,6 +214,7 @@ impl QemuAsanHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::unused_self)]
|
#[allow(clippy::unused_self)]
|
||||||
|
#[must_use]
|
||||||
pub fn is_poisoned(&self, addr: u64, size: usize) -> bool {
|
pub fn is_poisoned(&self, addr: u64, size: usize) -> bool {
|
||||||
unsafe { asan_giovese_loadN(emu::g2h(addr), size) != 0 }
|
unsafe { asan_giovese_loadN(emu::g2h(addr), size) != 0 }
|
||||||
}
|
}
|
||||||
@ -454,6 +453,7 @@ pub fn trace_write_n_asan<I, QT, S>(
|
|||||||
h.read_n(addr, size);
|
h.read_n(addr, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(clippy::too_many_arguments)]
|
||||||
pub fn qasan_fake_syscall<I, QT, S>(
|
pub fn qasan_fake_syscall<I, QT, S>(
|
||||||
helpers: &mut QT,
|
helpers: &mut QT,
|
||||||
_state: &mut S,
|
_state: &mut S,
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
|
use hashbrown::{hash_map::Entry, HashMap};
|
||||||
use libafl::{executors::ExitKind, inputs::Input, observers::ObserversTuple, state::HasMetadata};
|
use libafl::{executors::ExitKind, inputs::Input, observers::ObserversTuple, state::HasMetadata};
|
||||||
pub use libafl_targets::{
|
pub use libafl_targets::{
|
||||||
cmplog::__libafl_targets_cmplog_instructions, CmpLogObserver, CMPLOG_MAP, CMPLOG_MAP_W,
|
cmplog::__libafl_targets_cmplog_instructions, CmpLogObserver, CMPLOG_MAP, CMPLOG_MAP_W,
|
||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
emu,
|
emu,
|
||||||
@ -101,13 +101,11 @@ where
|
|||||||
.get_mut::<QemuCmpsMapMetadata>()
|
.get_mut::<QemuCmpsMapMetadata>()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let id = meta.current_id as usize;
|
let id = meta.current_id as usize;
|
||||||
if meta.map.contains_key(&pc) {
|
|
||||||
Some(*meta.map.get(&pc).unwrap())
|
Some(*meta.map.entry(pc).or_insert_with(|| {
|
||||||
} else {
|
|
||||||
meta.current_id = ((id + 1) & (CMPLOG_MAP_W - 1)) as u64;
|
meta.current_id = ((id + 1) & (CMPLOG_MAP_W - 1)) as u64;
|
||||||
meta.map.insert(pc, id as u64);
|
id as u64
|
||||||
Some(id as u64)
|
}))
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub extern "C" fn trace_cmp1_cmplog(id: u64, v0: u8, v1: u8) {
|
pub extern "C" fn trace_cmp1_cmplog(id: u64, v0: u8, v1: u8) {
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
|
use hashbrown::{hash_map::Entry, HashMap};
|
||||||
use libafl::{executors::ExitKind, inputs::Input, observers::ObserversTuple, state::HasMetadata};
|
use libafl::{executors::ExitKind, inputs::Input, observers::ObserversTuple, state::HasMetadata};
|
||||||
pub use libafl_targets::{EDGES_MAP, EDGES_MAP_SIZE, MAX_EDGES_NUM};
|
pub use libafl_targets::{EDGES_MAP, EDGES_MAP_SIZE, MAX_EDGES_NUM};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::{cell::UnsafeCell, cmp::max, collections::HashMap};
|
use std::{cell::UnsafeCell, cmp::max};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
emu,
|
emu,
|
||||||
@ -104,22 +105,26 @@ where
|
|||||||
.metadata_mut()
|
.metadata_mut()
|
||||||
.get_mut::<QemuEdgesMapMetadata>()
|
.get_mut::<QemuEdgesMapMetadata>()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
if meta.map.contains_key(&(src, dest)) {
|
|
||||||
let id = *meta.map.get(&(src, dest)).unwrap();
|
match meta.map.entry((src, dest)) {
|
||||||
|
Entry::Occupied(e) => {
|
||||||
|
let id = *e.get();
|
||||||
let nxt = (id as usize + 1) & (EDGES_MAP_SIZE - 1);
|
let nxt = (id as usize + 1) & (EDGES_MAP_SIZE - 1);
|
||||||
unsafe {
|
unsafe {
|
||||||
MAX_EDGES_NUM = max(MAX_EDGES_NUM, nxt);
|
MAX_EDGES_NUM = max(MAX_EDGES_NUM, nxt);
|
||||||
}
|
}
|
||||||
Some(id)
|
Some(id)
|
||||||
} else {
|
}
|
||||||
|
Entry::Vacant(e) => {
|
||||||
let id = meta.current_id;
|
let id = meta.current_id;
|
||||||
meta.map.insert((src, dest), id);
|
e.insert(id);
|
||||||
meta.current_id = (id + 1) & (EDGES_MAP_SIZE as u64 - 1);
|
meta.current_id = (id + 1) & (EDGES_MAP_SIZE as u64 - 1);
|
||||||
unsafe {
|
unsafe {
|
||||||
MAX_EDGES_NUM = meta.current_id as usize;
|
MAX_EDGES_NUM = meta.current_id as usize;
|
||||||
}
|
}
|
||||||
Some(id as u64)
|
Some(id as u64)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn gen_hashed_edge_ids<I, QT, S>(
|
pub fn gen_hashed_edge_ids<I, QT, S>(
|
||||||
|
@ -232,7 +232,7 @@ extern "C" {
|
|||||||
|
|
||||||
#[allow(clippy::must_use_candidate, clippy::similar_names)]
|
#[allow(clippy::must_use_candidate, clippy::similar_names)]
|
||||||
pub fn init(args: &[String], env: &[(String, String)]) -> i32 {
|
pub fn init(args: &[String], env: &[(String, String)]) -> i32 {
|
||||||
assert!(args.len() > 0);
|
assert!(!args.is_empty());
|
||||||
let args: Vec<String> = args.iter().map(|x| x.clone() + "\0").collect();
|
let args: Vec<String> = args.iter().map(|x| x.clone() + "\0").collect();
|
||||||
let argv: Vec<*const u8> = args.iter().map(|x| x.as_bytes().as_ptr()).collect();
|
let argv: Vec<*const u8> = args.iter().map(|x| x.as_bytes().as_ptr()).collect();
|
||||||
assert!(argv.len() < i32::MAX as usize);
|
assert!(argv.len() < i32::MAX as usize);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user