Unverified Commit ee048cbc by Melvin Klimke Committed by GitHub

Test compiling (#53)

Update emulation based acceptance tests on the basis of the new deduplicated warning output
parent d8c03e5e
...@@ -84,7 +84,7 @@ let emit_native out_path = ...@@ -84,7 +84,7 @@ let emit_native out_path =
let output_check_path = List.map !check_path_store ~f:(fun (check_path:CheckPath.t) -> let output_check_path = List.map !check_path_store ~f:(fun (check_path:CheckPath.t) ->
sprintf "[CheckPath] %s(%s) -> %s via %s" check_path.source check_path.source_addr check_path.destination_addr check_path.path_str) in sprintf "[CheckPath] %s(%s) -> %s via %s" check_path.source check_path.source_addr check_path.destination_addr check_path.path_str) in
let output_warnings = List.map !cwe_warning_store ~f:(fun (cwe_warning:CweWarning.t) -> let output_warnings = List.map !cwe_warning_store ~f:(fun (cwe_warning:CweWarning.t) ->
sprintf "[%s] (%s) %s" cwe_warning.name cwe_warning.version cwe_warning.description) in sprintf "[%s] (%s) \n %s" cwe_warning.name cwe_warning.version cwe_warning.description) in
let output_lines = output_warnings @ output_check_path in let output_lines = output_warnings @ output_check_path in
if out_path = "" then if out_path = "" then
List.iter output_lines ~f:print_endline List.iter output_lines ~f:print_endline
......
...@@ -8,23 +8,20 @@ class TestCwe415(unittest.TestCase): ...@@ -8,23 +8,20 @@ class TestCwe415(unittest.TestCase):
self.target = '415' self.target = '415'
self.string = b'Double Free' self.string = b'Double Free'
@unittest.skip("FIXME: broken on Ubuntu 18.04 with the corresponding gcc version")
def test_cwe415_01_x64_gcc(self): def test_cwe415_01_x64_gcc(self):
expect_res = 9 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'x64', 'gcc', self.string) self.target, self.target, 'x64', 'gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME: broken on Ubuntu 18.04 with the corresponding clang version")
def test_cwe415_01_x64_clang(self): def test_cwe415_01_x64_clang(self):
expect_res = 9 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'x64', 'clang', self.string) self.target, self.target, 'x64', 'clang', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME: yields different results on Ubuntu 16.04 and 18.04")
def test_cwe415_01_x86_gcc(self): def test_cwe415_01_x86_gcc(self):
expect_res = 5 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'x86', 'gcc', self.string) self.target, self.target, 'x86', 'gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
...@@ -35,91 +32,88 @@ class TestCwe415(unittest.TestCase): ...@@ -35,91 +32,88 @@ class TestCwe415(unittest.TestCase):
self.target, self.target, 'x86', 'clang', self.string) self.target, self.target, 'x86', 'clang', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME")
def test_cwe415_01_arm_gcc(self): def test_cwe415_01_arm_gcc(self):
expect_res = 5 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'arm', 'gcc', self.string) self.target, self.target, 'arm', 'gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME")
def test_cwe415_01_arm_clang(self): def test_cwe415_01_arm_clang(self):
expect_res = 1 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'arm', 'clang', self.string) self.target, self.target, 'arm', 'clang', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip('Not supported by BAP. (no recognizable code backtrace)') @unittest.skip('Not supported by BAP. (no recognizable code backtrace)')
def test_cwe415_01_aarch64_gcc(self): def test_cwe415_01_aarch64_gcc(self):
expect_res = 1 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'aarch64', 'gcc', self.string) self.target, self.target, 'aarch64', 'gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip('Not supported by BAP. (no recognizable code backtrace)') @unittest.skip('Not supported by BAP. (no recognizable code backtrace)')
def test_cwe415_01_aarch64_clang(self): def test_cwe415_01_aarch64_clang(self):
expect_res = 1 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'aarch64', 'clang', self.string) self.target, self.target, 'aarch64', 'clang', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("Depends on proper MIPS support in BAP") @unittest.skip("Depends on proper MIPS support in BAP")
def test_cwe415_01_mips_gcc(self): def test_cwe415_01_mips_gcc(self):
expect_res = 1 expect_res = 3
res = cwe_checker_testlib.execute_and_check_occurence( res = cwe_checker_testlib.execute_and_check_occurence(
self.target, self.target, 'mips', 'gcc', self.string) self.target, self.target, 'mips', 'gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME")
def test_cwe415_01_mips_clang(self): def test_cwe415_01_mips_clang(self):
expect_res = 1 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'mips', 'clang', self.string) self.target, self.target, 'mips', 'clang', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME") @unittest.skip("FIXME")
def test_cwe415_01_mipsel_gcc(self): def test_cwe415_01_mipsel_gcc(self):
expect_res = 1 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'mipsel', 'gcc', self.string) self.target, self.target, 'mipsel', 'gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME") @unittest.skip("FIXME")
def test_cwe415_01_mipsel_clang(self): def test_cwe415_01_mipsel_clang(self):
expect_res = 1 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'mipsel', 'clang', self.string) self.target, self.target, 'mipsel', 'clang', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME") @unittest.skip("FIXME")
def test_cwe415_01_mips64_gcc(self): def test_cwe415_01_mips64_gcc(self):
expect_res = 1 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'mips64', 'gcc', self.string) self.target, self.target, 'mips64', 'gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME") @unittest.skip("FIXME")
def test_cwe415_01_mips64_clang(self): def test_cwe415_01_mips64_clang(self):
expect_res = 1 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'mips64', 'clang', self.string) self.target, self.target, 'mips64', 'clang', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME") @unittest.skip("FIXME")
def test_cwe415_01_mips64el_gcc(self): def test_cwe415_01_mips64el_gcc(self):
expect_res = 1 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'mips64el', 'gcc', self.string) self.target, self.target, 'mips64el', 'gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME") @unittest.skip("FIXME")
def test_cwe415_01_mips64el_clang(self): def test_cwe415_01_mips64el_clang(self):
expect_res = 1 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'mips64el', 'clang', self.string) self.target, self.target, 'mips64el', 'clang', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME") @unittest.skip('FIXME: Check again when moved to BAP 2.1')
def test_cwe415_01_ppc_gcc(self): def test_cwe415_01_ppc_gcc(self):
expect_res = 3 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
...@@ -128,42 +122,42 @@ class TestCwe415(unittest.TestCase): ...@@ -128,42 +122,42 @@ class TestCwe415(unittest.TestCase):
@unittest.skip('Not supported by BAP. (no recognizable code backtrace)') @unittest.skip('Not supported by BAP. (no recognizable code backtrace)')
def test_cwe415_01_ppc64_gcc(self): def test_cwe415_01_ppc64_gcc(self):
expect_res = 1 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'ppc64', 'gcc', self.string) self.target, self.target, 'ppc64', 'gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip('Not supported by BAP. (no recognizable code backtrace)') @unittest.skip('Not supported by BAP. (no recognizable code backtrace)')
def test_cwe415_01_ppc64_clang(self): def test_cwe415_01_ppc64_clang(self):
expect_res = 1 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'ppc64', 'clang', self.string) self.target, self.target, 'ppc64', 'clang', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME") @unittest.skip("FIXME")
def test_cwe415_01_ppc64le_gcc(self): def test_cwe415_01_ppc64le_gcc(self):
expect_res = 1 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'ppc64le', 'gcc', self.string) self.target, self.target, 'ppc64le', 'gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME") @unittest.skip("FIXME")
def test_cwe415_01_ppc64le_clang(self): def test_cwe415_01_ppc64le_clang(self):
expect_res = 1 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'ppc64le', 'clang', self.string) self.target, self.target, 'ppc64le', 'clang', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME") @unittest.skip('FIXME: Only finds two of three possible double free')
def test_cwe415_01_x86_mingw_gcc(self): def test_cwe415_01_x86_mingw_gcc(self):
expect_res = 5 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'x86', 'mingw32-gcc', self.string) self.target, self.target, 'x86', 'mingw32-gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip('FIXME!') @unittest.skip('FIXME: Only finds two of three possible double free')
def test_cwe415_01_x64_mingw_gcc(self): def test_cwe415_01_x64_mingw_gcc(self):
expect_res = 9 expect_res = 3
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'x64', 'mingw32-gcc', self.string) self.target, self.target, 'x64', 'mingw32-gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
...@@ -8,23 +8,20 @@ class TestCwe416(unittest.TestCase): ...@@ -8,23 +8,20 @@ class TestCwe416(unittest.TestCase):
self.target = '416' self.target = '416'
self.string = b'Use After Free' self.string = b'Use After Free'
@unittest.skip("FIXME: broken on Ubuntu 18.04 with the corresponding gcc version")
def test_cwe416_01_x64_gcc(self): def test_cwe416_01_x64_gcc(self):
expect_res = 4 expect_res = 1
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'x64', 'gcc', self.string) self.target, self.target, 'x64', 'gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME: broken on Ubuntu 18.04 with the corresponding clang version")
def test_cwe416_01_x64_clang(self): def test_cwe416_01_x64_clang(self):
expect_res = 4 expect_res = 1
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'x64', 'clang', self.string) self.target, self.target, 'x64', 'clang', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME: yields different results on Ubuntu 16.04 and 18.04")
def test_cwe416_01_x86_gcc(self): def test_cwe416_01_x86_gcc(self):
expect_res = 2 expect_res = 1
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'x86', 'gcc', self.string) self.target, self.target, 'x86', 'gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
...@@ -35,16 +32,14 @@ class TestCwe416(unittest.TestCase): ...@@ -35,16 +32,14 @@ class TestCwe416(unittest.TestCase):
self.target, self.target, 'x86', 'clang', self.string) self.target, self.target, 'x86', 'clang', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME")
def test_cwe416_01_arm_gcc(self): def test_cwe416_01_arm_gcc(self):
expect_res = 2 expect_res = 1
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'arm', 'gcc', self.string) self.target, self.target, 'arm', 'gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME")
def test_cwe416_01_arm_clang(self): def test_cwe416_01_arm_clang(self):
expect_res = 2 expect_res = 1
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'arm', 'clang', self.string) self.target, self.target, 'arm', 'clang', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
...@@ -70,7 +65,6 @@ class TestCwe416(unittest.TestCase): ...@@ -70,7 +65,6 @@ class TestCwe416(unittest.TestCase):
self.target, self.target, 'mips', 'gcc', self.string) self.target, self.target, 'mips', 'gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME")
def test_cwe416_01_mips_clang(self): def test_cwe416_01_mips_clang(self):
expect_res = 1 expect_res = 1
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
...@@ -119,7 +113,7 @@ class TestCwe416(unittest.TestCase): ...@@ -119,7 +113,7 @@ class TestCwe416(unittest.TestCase):
self.target, self.target, 'mips64el', 'clang', self.string) self.target, self.target, 'mips64el', 'clang', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME") @unittest.skip('FIXME: Check again when moved to BAP 2.1')
def test_cwe416_01_ppc_gcc(self): def test_cwe416_01_ppc_gcc(self):
expect_res = 1 expect_res = 1
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
...@@ -161,9 +155,9 @@ class TestCwe416(unittest.TestCase): ...@@ -161,9 +155,9 @@ class TestCwe416(unittest.TestCase):
self.target, self.target, 'x86', 'mingw32-gcc', self.string) self.target, self.target, 'x86', 'mingw32-gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
@unittest.skip("FIXME") @unittest.skip('FIXME: Check again when moved to BAP 2.1')
def test_cwe416_01_x64_mingw_gcc(self): def test_cwe416_01_x64_mingw_gcc(self):
expect_res = 4 expect_res = 1
res = cwe_checker_testlib.execute_emulation_and_check_occurence( res = cwe_checker_testlib.execute_emulation_and_check_occurence(
self.target, self.target, 'x64', 'mingw32-gcc', self.string) self.target, self.target, 'x64', 'mingw32-gcc', self.string)
self.assertEqual(res, expect_res) self.assertEqual(res, expect_res)
...@@ -140,7 +140,6 @@ def build_cpp(arch, compiler): ...@@ -140,7 +140,6 @@ def build_cpp(arch, compiler):
env['CXXFLAGS'] = cpp_flags[arch] + optimize(str(prog)) env['CXXFLAGS'] = cpp_flags[arch] + optimize(str(prog))
if arch == 'x86': if arch == 'x86':
env['LINKFLAGS'] = '-m32' env['LINKFLAGS'] = '-m32'
compiler_abrev = get_compiler_abrev(compiler) compiler_abrev = get_compiler_abrev(compiler)
if compiler_abrev == 'mingw32-g++' and str(prog) in skip_for_pe: if compiler_abrev == 'mingw32-g++' and str(prog) in skip_for_pe:
continue continue
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment