diff --git a/tests/bash_tests/utils.py b/tests/bash_tests/utils.py index 95df4894e4..3a3012c3b9 100644 --- a/tests/bash_tests/utils.py +++ b/tests/bash_tests/utils.py @@ -14,6 +14,20 @@ from urllib import request import system_tests +# Run `exiv2 --verbose --version` to find out if the Exiv2 binary is 32-bit or 64-bit. +def exiv2_is_64bit(bin_dir): + proc = subprocess.run( + [os.path.join(bin_dir, 'exiv2'), '--verbose', '--version'], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + cwd=bin_dir + ) + proc.check_returncode() + m = re.search(r'^bits=([0-9]+)\s*$', proc.stdout.decode('utf-8'), re.MULTILINE) + numbits = int(m[1]) + assert numbits in {32, 64} + return numbits == 64 + """ Part 1: @@ -43,6 +57,8 @@ class Config: if 'VALGRIND' in os.environ: valgrind = os.environ['VALGRIND'] + is_64bit = exiv2_is_64bit(bin_dir) + @classmethod def init(cls): """ Init test environments and variables that may be modified """ diff --git a/tests/bugfixes/github/test_CVE_2017_14859.py b/tests/bugfixes/github/test_CVE_2017_14859.py index 01c10df175..c9b267fde2 100644 --- a/tests/bugfixes/github/test_CVE_2017_14859.py +++ b/tests/bugfixes/github/test_CVE_2017_14859.py @@ -2,7 +2,6 @@ import system_tests - class TestCvePoC(metaclass=system_tests.CaseMeta): url = "https://github.com/Exiv2/exiv2/issues/74" @@ -10,9 +9,9 @@ class TestCvePoC(metaclass=system_tests.CaseMeta): filename = "$data_path/005-invalid-mem" commands = ["$exiv2 " + filename] stdout = [""] - stderr = ["""$exiv2_exception_message """ + filename + """: -$kerFailedToReadImageData -"""] + stderr = ["""$exiv2_exception_message """ + filename + ":\n" + + ("$kerFailedToReadImageData" if system_tests.BT.Config.is_64bit else "$kerCorruptedMetadata") + + "\n"] retval = [1] def compare_stderr(self, i, command, got_stderr, expected_stderr): diff --git a/tests/bugfixes/github/test_CVE_2017_14862.py b/tests/bugfixes/github/test_CVE_2017_14862.py index 7b065cde2b..b01a4d4cb3 100644 --- a/tests/bugfixes/github/test_CVE_2017_14862.py +++ b/tests/bugfixes/github/test_CVE_2017_14862.py @@ -10,8 +10,14 @@ class TestCvePoC(metaclass=system_tests.CaseMeta): filename = "$data_path/008-invalid-mem" commands = ["$exiv2 -q " + filename] - stderr = [""] - retval = [0] + if system_tests.BT.Config.is_64bit: + stderr = [""] + retval = [0] + else: + stderr = ["""$exiv2_exception_message """ + filename + """: +$kerCorruptedMetadata +"""] + retval = [1] compare_stdout = check_no_ASAN_UBSAN_errors diff --git a/tests/bugfixes/github/test_CVE_2017_14864.py b/tests/bugfixes/github/test_CVE_2017_14864.py index 15e88ef24a..f00d83039e 100644 --- a/tests/bugfixes/github/test_CVE_2017_14864.py +++ b/tests/bugfixes/github/test_CVE_2017_14864.py @@ -2,7 +2,6 @@ import system_tests - class TestCvePoC(metaclass=system_tests.CaseMeta): url = "https://github.com/Exiv2/exiv2/issues/73" @@ -10,7 +9,7 @@ class TestCvePoC(metaclass=system_tests.CaseMeta): filename = "$data_path/02-Invalid-mem-def" commands = ["$exiv2 -q " + filename] stdout = [""] - stderr = ["""$exiv2_exception_message """ + filename + """: -$kerFailedToReadImageData -"""] + stderr = ["""$exiv2_exception_message """ + filename + ":\n" + + ("$kerFailedToReadImageData" if system_tests.BT.Config.is_64bit else "$kerCorruptedMetadata") + + "\n"] retval = [1] diff --git a/tests/bugfixes/github/test_CVE_2018_12265.py b/tests/bugfixes/github/test_CVE_2018_12265.py index 735e67ceaa..50d74b598e 100644 --- a/tests/bugfixes/github/test_CVE_2018_12265.py +++ b/tests/bugfixes/github/test_CVE_2018_12265.py @@ -2,7 +2,6 @@ import system_tests - class AdditionOverflowInLoaderExifJpeg(metaclass=system_tests.CaseMeta): """ Regression test for bug #365: @@ -17,6 +16,7 @@ class AdditionOverflowInLoaderExifJpeg(metaclass=system_tests.CaseMeta): """Error: Upper boundary of data for directory Image, entry 0x00fe is out of bounds: Offset = 0x0000002a, size = 64, exceeds buffer size by 22 Bytes; truncating the entry Warning: Directory Image, entry 0x0201: Strip 0 is outside of the data area; ignored. Warning: Directory Image, entry 0x0201: Strip 7 is outside of the data area; ignored. -""" +""" + + ("" if system_tests.BT.Config.is_64bit else "Uncaught exception: Overflow in addition\n") ] - retval = [0] + retval = [0 if system_tests.BT.Config.is_64bit else 1]