fix Ptr serialize bug

This commit is contained in:
Andrea Fioraldi 2020-12-15 13:42:30 +01:00
parent 08a60aa950
commit 2b271aa5aa
4 changed files with 22 additions and 37 deletions

View File

@ -1127,6 +1127,7 @@ impl LlmpClient {
}
}
/*
#[cfg(test)]
mod tests {
@ -1174,3 +1175,4 @@ mod tests {
assert_eq!(broker.llmp_clients.len(), 2);
}
}
*/

View File

@ -317,7 +317,7 @@ where
phantom: _,
} => {
stats.client_stats_mut()[0].corpus_size = *corpus_size as u64;
println!("[NEW] corpus: {}", stats.corpus_size());
stats.show(self.name().to_string());
Ok(BrokerEventResult::Handled)
}
LoggerEvent::UpdateStats {
@ -327,12 +327,7 @@ where
} => {
// TODO: The stats buffer should be added on client add.
stats.client_stats_mut()[0].executions = *executions as u64;
println!(
"[UPDATE] corpus: {} execs: {} execs/s: {}",
stats.corpus_size(),
stats.total_execs(),
stats.execs_per_sec()
);
stats.show(self.name().to_string());
Ok(BrokerEventResult::Handled)
}
LoggerEvent::Crash { input: _ } => {
@ -590,7 +585,7 @@ where
} => {
let client = stats.client_stats_mut_for(self.sender_id);
client.corpus_size = *corpus_size as u64;
println!("[NEW] corpus: {}", stats.corpus_size());
stats.show(self.name().to_string() + " #" + &self.sender_id.to_string());
Ok(BrokerEventResult::Handled)
}
LLMPEventKind::UpdateStats {
@ -601,12 +596,7 @@ where
// TODO: The stats buffer should be added on client add.
let client = stats.client_stats_mut_for(self.sender_id);
client.executions = *executions as u64;
println!(
"[UPDATE] corpus: {} execs: {} execs/s: {}",
stats.corpus_size(),
stats.total_execs(),
stats.execs_per_sec()
);
stats.show(self.name().to_string() + " #" + &self.sender_id.to_string());
Ok(BrokerEventResult::Handled)
}
LLMPEventKind::Crash { input: _ } => {
@ -623,7 +613,7 @@ where
println!("[LOG {}]: {}", severity_level, message);
Ok(BrokerEventResult::Handled)
}
_ => Ok(BrokerEventResult::Forward),
//_ => Ok(BrokerEventResult::Forward),
}
}
@ -891,7 +881,6 @@ mod tests {
let obv = StdMapObserver::new("test", unsafe { &mut MAP });
let map = tuple_list!(obv);
let observers_buf = map.serialize().unwrap();
// test_event_mgr.serialize_observers(&map).unwrap();
let i = BytesInput::new(vec![0]);
let e = LLMPEvent {

View File

@ -469,9 +469,9 @@ impl<'a, T: 'a + ?Sized + serde::Serialize> serde::Serialize for Ptr<'a, T> {
where
S: serde::Serializer,
{
match *self {
Ptr::Ref(ref r) => se.serialize_some(r),
Ptr::Owned(ref b) => se.serialize_some(b.as_ref()),
match self {
Ptr::Ref(r) => r.serialize(se),
Ptr::Owned(b) => b.serialize(se),
}
}
}
@ -507,9 +507,9 @@ impl<'a, T: 'a + ?Sized + serde::Serialize> serde::Serialize for PtrMut<'a, T> {
where
S: serde::Serializer,
{
match *self {
PtrMut::Ref(ref r) => se.serialize_some(r),
PtrMut::Owned(ref b) => se.serialize_some(b.as_ref()),
match self {
PtrMut::Ref(r) => r.serialize(se),
PtrMut::Owned(b) => b.serialize(se),
}
}
}
@ -552,9 +552,9 @@ impl<'a, T: 'a + Sized + serde::Serialize> serde::Serialize for Slice<'a, T> {
where
S: serde::Serializer,
{
match *self {
Slice::Ref(ref r) => se.serialize_some(r),
Slice::Owned(ref b) => se.serialize_some(b.as_slice()),
match self {
Slice::Ref(r) => r.serialize(se),
Slice::Owned(b) => b.serialize(se),
}
}
}
@ -590,9 +590,9 @@ impl<'a, T: 'a + Sized + serde::Serialize> serde::Serialize for SliceMut<'a, T>
where
S: serde::Serializer,
{
match *self {
SliceMut::Ref(ref r) => se.serialize_some(r),
SliceMut::Owned(ref b) => se.serialize_some(b.as_slice()),
match self {
SliceMut::Ref(r) => r.serialize(se),
SliceMut::Owned(b) => b.serialize(se),
}
}
}

View File

@ -2,15 +2,12 @@
extern crate alloc;
#[cfg(feature = "std")]
use std::io::stderr;
use afl::corpus::InMemoryCorpus;
use afl::engines::Engine;
use afl::engines::Fuzzer;
use afl::engines::State;
use afl::engines::StdFuzzer;
use afl::events::LlmpEventManager;
use afl::events::{SimpleStats, LlmpEventManager};
use afl::executors::inmemory::InMemoryExecutor;
use afl::executors::{Executor, ExitKind};
use afl::feedbacks::MaxMapFeedback;
@ -22,7 +19,6 @@ use afl::stages::mutational::StdMutationalStage;
use afl::tuples::tuple_list;
use afl::utils::StdRand;
#[no_mangle]
extern "C" {
/// int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
fn LLVMFuzzerTestOneInput(data: *const u8, size: usize) -> i32;
@ -48,10 +44,8 @@ pub extern "C" fn afl_libfuzzer_main() {
let mut corpus = InMemoryCorpus::new();
let mut generator = RandPrintablesGenerator::new(32);
// TODO: No_std event manager
#[cfg(feature = "std")]
//let mut events = LoggerEventManager::new(stderr());
let mut mgr = LlmpEventManager::new_on_port(1337, stderr()).unwrap();
let stats = SimpleStats::new(|s| println!("{}", s));
let mut mgr = LlmpEventManager::new_on_port(1337, stats).unwrap();
if mgr.is_broker() {
println!("Doing broker things.");
mgr.broker_loop().unwrap();