示例#1
0
    def run(self, char_ref):
        log.debug(
            'Called SimProcedure java.lang.Character.isDigit with args: {}'.
            format(char_ref))
        char_str = self.state.memory.load(char_ref)

        constraint = claripy.StrIsDigit(char_str)

        return claripy.If(constraint, claripy.BVV(1, 32), claripy.BVV(0, 32))
示例#2
0
    def test_is_digit_simplification(self):
        correct_script = '''(set-logic ALL)


(check-sat)
'''
        str_concrete = claripy.StringV("1")
        res = claripy.StrIsDigit(str_concrete)
        solver = self.get_solver()
        solver.add(res)
        script = solver.get_smtlib_script_satisfiability()
        self.assertEqual(correct_script, script)
示例#3
0
    def test_is_digit(self):
        correct_script = '''(set-logic ALL)
(declare-fun STRING_symb_str_is_digit () String)
(assert (let ((.def_0 (= ( str.to.int STRING_symb_str_is_digit ) (- 1)))) (let ((.def_1 (not .def_0))) .def_1)))
(check-sat)
'''
        str_symb = claripy.StringS("symb_str_is_digit", 12, explicit_name=True)
        res = claripy.StrIsDigit(str_symb)
        solver = self.get_solver()
        solver.add(res)
        script = solver.get_smtlib_script_satisfiability()
        self.assertEqual(correct_script, script)