Esempio n. 1
0
    def test_symbolic_concrete(self):
        s1 = 'hi\0'
        s2 = self.state.symbolicate_buffer('+++\0')
        strs = self._push2(s1, s2)

        ret = strcmp(self.state, *strs)
        self.assertTrue(solver.can_be_true(self.state.constraints, ret != 0))
        self.assertTrue(solver.can_be_true(self.state.constraints, ret == 0))

        self.state.constrain(s2[0] == ord('a'))
        ret = strcmp(self.state, *strs)
        self.assertFalse(solver.can_be_true(self.state.constraints, ret <= 0))
        self._clear_constraints()

        self.state.constrain(s2[0] == ord('z'))
        ret = strcmp(self.state, *strs)
        self.assertFalse(solver.can_be_true(self.state.constraints, ret >= 0))
        self._clear_constraints()

        self.state.constrain(s2[0] == ord('h'))
        self.state.constrain(s2[1] == ord('i'))
        ret = strcmp(self.state, *strs)
        self.assertFalse(solver.can_be_true(self.state.constraints, ret > 0))

        self.state.constrain(s2[2] == ord('\0'))
        ret = strcmp(self.state, *strs)
        self.assertFalse(solver.can_be_true(self.state.constraints, ret != 0))
Esempio n. 2
0
    def test_symbolic_concrete(self):
        s1 = 'hi\0'
        s2 = self.state.symbolicate_buffer('+++\0')
        strs = self._push2(s1, s2)

        ret = strcmp(self.state, *strs)
        self.assertTrue(solver.can_be_true(self.state.constraints, ret != 0))
        self.assertTrue(solver.can_be_true(self.state.constraints, ret == 0))

        self.state.constrain(s2[0] == ord('a'))
        ret = strcmp(self.state, *strs)
        self.assertTrue(self.state.must_be_true(ret > 0))
        self._clear_constraints()

        self.state.constrain(s2[0] == ord('z'))
        ret = strcmp(self.state, *strs)
        self.assertTrue(self.state.must_be_true(ret < 0))
        self._clear_constraints()

        self.state.constrain(s2[0] == ord('h'))
        self.state.constrain(s2[1] == ord('i'))
        ret = strcmp(self.state, *strs)
        self.assertTrue(self.state.must_be_true(ret <= 0))

        self.state.constrain(s2[2] == ord('\0'))
        ret = strcmp(self.state, *strs)
        self.assertTrue(self.state.must_be_true(ret == 0))
Esempio n. 3
0
    def test_symbolic_actually_concrete(self):
        s1 = 'ab\0'
        s2 = self.state.symbolicate_buffer('d+\0')
        strs = self._push2(s1, s2)

        ret = strcmp(self.state, *strs)
        self.assertTrue(self.state.must_be_true(ret < 0))
Esempio n. 4
0
    def test_symbolic_actually_concrete(self):
        s1 = 'ab\0'
        s2 = self.state.symbolicate_buffer('d+\0')
        strs = self._push2(s1, s2)

        ret = strcmp(self.state, *strs)
        self.assertFalse(solver.can_be_true(self.state.constraints, ret >= 0))
Esempio n. 5
0
    def test_symbolic_actually_concrete(self):
        s1 = 'ab\0'
        s2 = self.state.symbolicate_buffer('d+\0')
        strs = self._push2(s1, s2)

        ret = strcmp(self.state, *strs)
        self.assertFalse(solver.can_be_true(self.state.constraints, ret >= 0))
Esempio n. 6
0
    def test_effective_null(self):
        s1 = self.state.symbolicate_buffer('a+')
        s2 = self.state.symbolicate_buffer('++')

        strs = self._push2(s1, s2)
        self.state.constrain(s1[1] == 0)
        self.state.constrain(s2[0] == ord('z'))

        ret = strcmp(self.state, *strs)
        self.assertTrue(self.state.must_be_true(ret < 0))
Esempio n. 7
0
    def test_effective_null(self):
        s1 = self.state.symbolicate_buffer('a+')
        s2 = self.state.symbolicate_buffer('++')

        strs = self._push2(s1, s2)
        self.state.constrain(s1[1] == 0)
        self.state.constrain(s2[0] == ord('z'))

        ret = strcmp(self.state, *strs)
        self.assertFalse(solver.can_be_true(self.state.constraints, ret >= 0))
Esempio n. 8
0
 def _concrete_gt(s1, s2):
     strs = self._push2(s1, s2)
     ret = strcmp(self.state, *strs)
     self.assertTrue(ret > 0)
Esempio n. 9
0
 def test_concrete_eq(self):
     s = 'abc\0'
     strs = self._push2(s, s)
     ret = strcmp(self.state, *strs)
     self.assertEqual(ret, 0)
Esempio n. 10
0
 def _concrete_gt(s1, s2):
     strs = self._push2(s1, s2)
     ret = strcmp(self.state, *strs)
     self.assertTrue(ret > 0)
Esempio n. 11
0
 def test_concrete_eq(self):
     s = 'abc\0'
     strs = self._push2(s, s)
     ret = strcmp(self.state, *strs)
     self.assertEqual(ret, 0)