(self, content, simfile, set_length=False)
Preconstrain the contents of a file.

        :param content:     The content to preconstrain the file to. Can be a bytestring or a list thereof.
        :param simfile:     The actual simfile to preconstrain
Preconstrain the contents of a file.
Preconstrain the contents of a file .
def preconstrain_file(self, content, simfile, set_length=False):
        """
        Preconstrain the contents of a file.

        :param content:     The content to preconstrain the file to. Can be a bytestring or a list thereof.
        :param simfile:     The actual simfile to preconstrain
        """
        repair_entry_state_opts = False
        if o.TRACK_ACTION_HISTORY in self.state.options:
            repair_entry_state_opts = True
            self.state.options -= {o.TRACK_ACTION_HISTORY}

        if set_length: # disable read bounds
            simfile.has_end = False

        pos = 0
        for write in content:
            if type(write) is int:
                write = bytes([write])
            data, length, pos = simfile.read(pos, len(write), disable_actions=True, inspect=False, short_reads=False)
            if not claripy.is_true(length == len(write)):
                raise AngrError("Bug in either SimFile or in usage of preconstrainer: couldn't get requested data from file")
            self.preconstrain(write, data)

        # if the file is a stream, reset its position
        if simfile.pos is not None:
            simfile.pos = 0

        if set_length: # enable read bounds; size is now maximum size
            simfile.has_end = True

        if repair_entry_state_opts:
            self.state.options |= {o.TRACK_ACTION_HISTORY}
def preconstrain_file ( self , content , simfile , set_length = False ) : repair_entry_state_opts = False if o . TRACK_ACTION_HISTORY in self . state . options : repair_entry_state_opts = True self . state . options -= { o . TRACK_ACTION_HISTORY } if set_length : # disable read bounds simfile . has_end = False pos = 0 for write in content : if type ( write ) is int : write = bytes ( [ write ] ) data , length , pos = simfile . read ( pos , len ( write ) , disable_actions = True , inspect = False , short_reads = False ) if not claripy . is_true ( length == len ( write ) ) : raise AngrError ( "Bug in either SimFile or in usage of preconstrainer: couldn't get requested data from file" ) self . preconstrain ( write , data ) # if the file is a stream, reset its position if simfile . pos is not None : simfile . pos = 0 if set_length : # enable read bounds; size is now maximum size simfile . has_end = True if repair_entry_state_opts : self . state . options |= { o . TRACK_ACTION_HISTORY }