diff --git a/manticore/native/state.py b/manticore/native/state.py index da0f6930b..dee3c77d4 100644 --- a/manticore/native/state.py +++ b/manticore/native/state.py @@ -11,6 +11,23 @@ class CheckpointData(NamedTuple): class State(StateBase): + def __enter__(self): + new_state = super().__enter__() + + # Update constraint pointers in platform objects + from ..platforms.linux import SLinux + + if isinstance(new_state.platform, SLinux): + from ..platforms.linux import SymbolicSocket + + # Add constraints to symbolic sockets + for fd_entry in new_state.platform.fd_table.entries(): + symb_socket_entry = fd_entry.fdlike + if isinstance(symb_socket_entry, SymbolicSocket): + symb_socket_entry._constraints = new_state.constraints + + return new_state + @property def cpu(self): """ diff --git a/manticore/platforms/linux.py b/manticore/platforms/linux.py index 68d4badb0..d27b9525d 100644 --- a/manticore/platforms/linux.py +++ b/manticore/platforms/linux.py @@ -3279,7 +3279,7 @@ def __setstate__(self, state): for fd_entry in self.fd_table.entries(): symb_socket_entry = fd_entry.fdlike if isinstance(symb_socket_entry, SymbolicSocket): - symb_socket_entry._constraints = self._constraints + symb_socket_entry._constraints = self.constraints def _sys_open_get_file(self, filename: str, flags: int) -> FdLike: if filename in self.symbolic_files: