def test_solve_min_max(self): expr = BitVecVariable(32, "tmp") self.state.constrain(expr > 4) self.state.constrain(expr < 7) self.assertEqual(self.state.solve_min(expr), 5) self.assertEqual(self.state.solve_max(expr), 6) self.assertEqual(self.state.solve_minmax(expr), (5, 6))
def test_policy_one(self): expr = BitVecVariable(32, "tmp") self.state.constrain(expr > 0) self.state.constrain(expr < 100) solved = self.state.concretize(expr, "ONE") self.assertEqual(len(solved), 1) self.assertIn(solved[0], range(100))
def test_policy_one(self): expr = BitVecVariable(32, 'tmp') self.state.add(expr > 0) self.state.add(expr < 100) solved = self.state.concretize(expr, 'ONE') self.assertEqual(len(solved), 1) self.assertIn(solved[0], xrange(100))
def test_armv7_syscall_openat_symbolic(self): platform, temp_dir = self._armv7_create_openat_state() try: platform.current.R0 = BitVecVariable(32, 'fd') with self.assertRaises(ConcretizeRegister) as cm: platform.syscall() e = cm.exception _min, _max = Z3Solver.instance().minmax(platform.constraints, e.cpu.read_register(e.reg_name)) self.assertLess(_min, len(platform.files)) self.assertGreater(_max, len(platform.files) - 1) finally: shutil.rmtree(temp_dir)
def test_solve_n2(self): expr = BitVecVariable(32, "tmp") self.state.constrain(expr > 4) self.state.constrain(expr < 100) solved = self.state.solve_n(expr, 5) self.assertEqual(len(solved), 5)
def test_solve_n(self): expr = BitVecVariable(32, "tmp") self.state.constrain(expr > 4) self.state.constrain(expr < 7) solved = sorted(self.state.solve_n(expr, 2)) self.assertEqual(solved, [5, 6])
def test_solve_one(self): val = 42 expr = BitVecVariable(32, "tmp") self.state.constrain(expr == val) solved = self.state.solve_one(expr) self.assertEqual(solved, val)
def test_issymbolic(self): v = BitVecVariable(32, 'sym') self.assertTrue(issymbolic(v))
def test_solve_n2(self): expr = BitVecVariable(32, 'tmp') self.state.add(expr > 4) self.state.add(expr < 100) solved = self.state.solve_n(expr, 5) self.assertEqual(len(solved), 5)
def test_solve_n(self): expr = BitVecVariable(32, 'tmp') self.state.add(expr > 4) self.state.add(expr < 7) solved = self.state.solve_n(expr, 2) self.assertEqual(solved, [5,6])
def test_solve_one(self): val = 42 expr = BitVecVariable(32, 'tmp') self.state.add(expr == val) solved = self.state.solve_one(expr) self.assertEqual(solved, val)
def test_issymbolic(self): v = BitVecVariable(size=32, name="sym") self.assertTrue(issymbolic(v))