1#!/usr/bin/env python 2 3""" 4This is the first of many syscall tests 5""" 6 7import logging 8l = logging.getLogger("angr.tests") 9 10import angr 11import nose 12 13# load the tests 14import os 15test_location = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', '..', 'binaries', 'tests') 16p_rw = None 17p = None 18 19def setup_rw(): 20 global p_rw 21 p_rw = angr.Project(os.path.join(test_location, 'x86_64', 'rw'), use_sim_procedures=False) 22 23def setup_orwc(): 24 global p 25 p = angr.Project(os.path.join(test_location, 'x86_64', 'orwc'), use_sim_procedures=False) 26 27def setup_module(): 28 setup_rw() 29 setup_orwc() 30 31def test_rw(): 32 explore = angr.surveyors.Explorer(p_rw, find=[0x400100]).run() 33 path = explore.found[0] 34 state = path.state 35 system = state.get_plugin('posix') 36 w_len = system.get_file(1).pos 37 r_len = system.get_file(0).pos 38 r_len = state.solver.eval(r_len) 39 40 nose.tools.assert_equal(r_len, w_len) 41 nose.tools.assert_equal(32, r_len) 42 43 44def test_orwc(): 45 four_files = angr.surveyors.Explorer(p, find=[0x400120]).run() 46 path = four_files.found[0] 47 state = path.state 48 system = state.get_plugin('posix') 49 num_files = len(system.files) 50 w_len = system.get_file(3).pos 51 r_len = system.get_file(0).pos 52 r_len = state.solver.eval(r_len) 53 54 after_close = angr.surveyors.Explorer(p, find=[0x400124]).run() 55 path = after_close.found[0] 56 state = path.state 57 system = state.get_plugin('posix') 58 files_ac = len(system.files) #files after close...so we expect one less file :) 59 60 nose.tools.assert_equal(4, num_files) 61 nose.tools.assert_equal(3, files_ac) 62 nose.tools.assert_equal(r_len, w_len) 63 nose.tools.assert_equal(32, r_len) 64 65 66if __name__ == '__main__': 67 try: 68 __import__('standard_logging') 69 __import__('angr_debug') 70 except ImportError: 71 pass 72 73 setup_module() 74 test_rw() 75 test_orwc() 76