Example #1
0
 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))
Example #2
0
 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))
Example #3
0
 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))
Example #4
0
    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)
Example #5
0
 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)
Example #6
0
 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])
Example #7
0
 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)
Example #8
0
 def test_issymbolic(self):
     v = BitVecVariable(32, 'sym')
     self.assertTrue(issymbolic(v))
Example #9
0
 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)
Example #10
0
 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])
Example #11
0
 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)
Example #12
0
 def test_issymbolic(self):
     v = BitVecVariable(size=32, name="sym")
     self.assertTrue(issymbolic(v))