diff --git a/bin/mctest/main_angr.py b/bin/mctest/main_angr.py index aec0a66..b8ef318 100644 --- a/bin/mctest/main_angr.py +++ b/bin/mctest/main_angr.py @@ -147,10 +147,9 @@ class Assume(angr.SimProcedure): def report_state(state): test = state.globals['test'] if state.globals['failed']: - message = (3, "Failed: {}".format(test.name)) + add_log_message(state, 3, "Failed: {}".format(test.name)) else: - message = (1, "Passed: {}".format(test.name)) - state.globals['log_messages'].append(message) + add_log_message(state, 1, "Passed: {}".format(test.name)) class Pass(angr.SimProcedure): @@ -174,6 +173,13 @@ class SoftFail(angr.SimProcedure): self.state.globals['failed'] = 1 +def add_log_message(state, level, message): + """Add a log message to a state.""" + messages = list(state.globals['log_messages']) + messages.append((level, message)) + state.globals['log_messages'] = messages + + LEVEL_TO_LOGGER = { 0: L.debug, 1: L.info, @@ -202,7 +208,8 @@ class Log(angr.SimProcedure): break data.append(b) - self.state.globals['log_messages'].append((level, data)) + # Deep copy the message. + add_log_message(self.state, level, data) if 3 == level: self.state.globals['failed'] = 1 # Soft failure on an error log message.