diff --git a/libafl/src/executors/command.rs b/libafl/src/executors/command.rs index ea0e3885a4..fca9f6e6cf 100644 --- a/libafl/src/executors/command.rs +++ b/libafl/src/executors/command.rs @@ -212,7 +212,7 @@ where pub fn from_cmd_with_file

( cmd: &Command, debug_child: bool, - mut observers: OT, + observers: OT, path: P, ) -> Result where @@ -529,7 +529,7 @@ impl CommandExecutorBuilder { /// Builds the `ComandExecutor` pub fn build( &self, - mut observers: OT, + observers: OT, ) -> Result, Error> where OT: Debug + MatchName + ObserversTuple, diff --git a/libafl/src/executors/differential.rs b/libafl/src/executors/differential.rs index a46bd9b9fa..4e24b4d114 100644 --- a/libafl/src/executors/differential.rs +++ b/libafl/src/executors/differential.rs @@ -141,13 +141,13 @@ where /// Returns true if a `stdout` observer was added to the list #[inline] - fn observes_stdout(&mut self) -> bool { - self.primary.as_mut().observes_stdout() || self.secondary.as_mut().observes_stdout() + fn observes_stdout(&self) -> bool { + self.primary.as_ref().observes_stdout() || self.secondary.as_ref().observes_stdout() } /// Returns true if a `stderr` observer was added to the list #[inline] - fn observes_stderr(&mut self) -> bool { - self.primary.as_mut().observes_stderr() || self.secondary.as_mut().observes_stderr() + fn observes_stderr(&self) -> bool { + self.primary.as_ref().observes_stderr() || self.secondary.as_ref().observes_stderr() } /// Runs `observe_stdout` for all stdout observers in the list diff --git a/libafl/src/observers/mod.rs b/libafl/src/observers/mod.rs index 3eaedc1bdb..8702187c64 100644 --- a/libafl/src/observers/mod.rs +++ b/libafl/src/observers/mod.rs @@ -93,12 +93,12 @@ where /// If this observer observes `stdout` #[inline] - fn observes_stdout(&mut self) -> bool { + fn observes_stdout(&self) -> bool { false } /// If this observer observes `stderr` #[inline] - fn observes_stderr(&mut self) -> bool { + fn observes_stderr(&self) -> bool { false } @@ -107,6 +107,7 @@ where #[inline] #[allow(unused_variables)] fn observe_stdout(&mut self, stdout: &str) {} + /// React to new `stderr` /// To use this, always return `true` from `observes_stderr` #[inline] @@ -149,9 +150,9 @@ where ) -> Result<(), Error>; /// Returns true if a `stdout` observer was added to the list - fn observes_stdout(&mut self) -> bool; + fn observes_stdout(&self) -> bool; /// Returns true if a `stderr` observer was added to the list - fn observes_stderr(&mut self) -> bool; + fn observes_stderr(&self) -> bool; /// Runs `observe_stdout` for all stdout observers in the list fn observe_stdout(&mut self, stdout: &str); @@ -191,12 +192,13 @@ where /// Returns true if a `stdout` observer was added to the list #[inline] - fn observes_stdout(&mut self) -> bool { + fn observes_stdout(&self) -> bool { false } + /// Returns true if a `stderr` observer was added to the list #[inline] - fn observes_stderr(&mut self) -> bool { + fn observes_stderr(&self) -> bool { false } @@ -204,6 +206,7 @@ where #[inline] #[allow(unused_variables)] fn observe_stdout(&mut self, stdout: &str) {} + /// Runs `observe_stderr` for all stderr observers in the list #[inline] #[allow(unused_variables)] @@ -248,12 +251,13 @@ where /// Returns true if a `stdout` observer was added to the list #[inline] - fn observes_stdout(&mut self) -> bool { + fn observes_stdout(&self) -> bool { self.0.observes_stdout() || self.1.observes_stdout() } + /// Returns true if a `stderr` observer was added to the list #[inline] - fn observes_stderr(&mut self) -> bool { + fn observes_stderr(&self) -> bool { self.0.observes_stderr() || self.1.observes_stderr() } @@ -261,10 +265,13 @@ where #[inline] fn observe_stdout(&mut self, stdout: &str) { self.0.observe_stdout(stdout); + self.1.observe_stdout(stdout); } + /// Runs `observe_stderr` for all stderr observers in the list #[inline] fn observe_stderr(&mut self, stderr: &str) { + self.0.observe_stderr(stderr); self.1.observe_stderr(stderr); } } @@ -974,12 +981,12 @@ pub mod pybind { // TODO: expose stdout/stderr to python #[inline] - fn observes_stdout(&mut self) -> bool { + fn observes_stdout(&self) -> bool { false } #[inline] - fn observes_stderr(&mut self) -> bool { + fn observes_stderr(&self) -> bool { false } diff --git a/libafl/src/observers/stacktrace.rs b/libafl/src/observers/stacktrace.rs index e3585648ff..e228b38880 100644 --- a/libafl/src/observers/stacktrace.rs +++ b/libafl/src/observers/stacktrace.rs @@ -264,7 +264,7 @@ where /// Do nothing on new `stderr` #[inline] - fn observes_stderr(&mut self) -> bool { + fn observes_stderr(&self) -> bool { true } diff --git a/libafl/src/observers/stdio.rs b/libafl/src/observers/stdio.rs index 7ef35003a7..ca046781aa 100644 --- a/libafl/src/observers/stdio.rs +++ b/libafl/src/observers/stdio.rs @@ -32,9 +32,10 @@ where S: UsesInput, { #[inline] - fn observes_stdout(&mut self) -> bool { + fn observes_stdout(&self) -> bool { true } + /// React to new `stdout` fn observe_stdout(&mut self, stdout: &str) { self.stdout = Some(stdout.into()); @@ -71,11 +72,11 @@ where S: UsesInput, { #[inline] - fn observes_stderr(&mut self) -> bool { + fn observes_stderr(&self) -> bool { true } - /// Do nothing on new `stderr` + /// React to new `stderr` fn observe_stderr(&mut self, stderr: &str) { self.stderr = Some(stderr.into()); }