From 1fc5f1d6e543ae6a146fd6ea0a86f6ff625586bf Mon Sep 17 00:00:00 2001 From: Dominik Maier Date: Thu, 29 Oct 2020 20:24:10 +0100 Subject: [PATCH] error handling --- src/corpus/mod.rs | 4 ++-- src/executors/mod.rs | 6 +++--- src/lib.rs | 10 +++++++--- src/stages/mutational.rs | 2 +- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/corpus/mod.rs b/src/corpus/mod.rs index f14c936bce..09462087f3 100644 --- a/src/corpus/mod.rs +++ b/src/corpus/mod.rs @@ -117,7 +117,7 @@ impl Corpus for QueueCorpus<'_, RandT> { /// Gets the next entry fn get(&mut self) -> Result<&Box, AflError> { if self.count() == 0 { - return Err(AflError::Unknown); // TODO(andrea) why unknown? use EmptyContainerError or similar + return Err(AflError::Empty("Testcases".to_string())); } self.pos = self.pos + 1; if self.pos >= self.count() { @@ -156,7 +156,7 @@ pub struct SimpleTestcase { impl Testcase for SimpleTestcase { fn load_input(&mut self) -> Result<&Box, AflError> { // TODO: Implement - Err(AflError::Unknown) + Err(AflError::NotImplemented("load_input".to_string())) } fn is_on_disk(&self) -> bool { diff --git a/src/executors/mod.rs b/src/executors/mod.rs index 738e8c51e7..cce70a6868 100644 --- a/src/executors/mod.rs +++ b/src/executors/mod.rs @@ -124,7 +124,7 @@ impl Executor for InMemoryExecutor { fn run_target(&mut self) -> Result { let bytes = match self.base.cur_input.as_ref() { Some(i) => i.serialize(), - None => return Err(AflError::Unknown), + None => return Err(AflError::Empty("cur_input".to_string())), }; unsafe { CURRENT_INMEMORY_EXECUTOR_PTR = self as *const InMemoryExecutor; @@ -203,10 +203,10 @@ mod tests { impl Observer for Nopserver { fn reset(&mut self) -> Result<(), AflError> { - Err(AflError::Unknown) + Err(AflError::Unknown("Nop reset, testing only".to_string())) } fn post_exec(&mut self) -> Result<(), AflError> { - Err(AflError::Unknown) + Err(AflError::Unknown("Nop exec, testing only".to_string())) } fn as_any(&self) -> &dyn Any { diff --git a/src/lib.rs b/src/lib.rs index 9bcb2d464e..d1dd22f15a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -20,9 +20,13 @@ pub enum AflError { File(#[from] io::Error), #[error("Key `{0}` not in Corpus")] KeyNotFound(String), - #[error("Unknown error")] - Unknown, -} + #[error("No items in {0}")] + Empty(String), + #[error("Not implemented: {0}")] + NotImplemented(String), + #[error("Unknown error: {0}")] + Unknown(String), + } #[cfg(test)] mod tests { diff --git a/src/stages/mutational.rs b/src/stages/mutational.rs index 917c4da806..29cade474d 100644 --- a/src/stages/mutational.rs +++ b/src/stages/mutational.rs @@ -10,7 +10,7 @@ impl Stage for MutationalStage { fn Perform(&mut self, input: &Input, entry: &mut Entry) -> Result<(), AflError> { // TODO: Implement me - Err(AflError::Unknown); + Err(AflError::NotImplemented("Stage does not perform yet")); } } \ No newline at end of file