diff options
author | Matthias Gierlings <[email protected]> | 2018-04-07 17:47:11 +0200 |
---|---|---|
committer | Matthias Gierlings <[email protected]> | 2018-04-07 18:03:37 +0200 |
commit | a96d1ca450a9cadea8157f3295a970af1f16a58f (patch) | |
tree | 08ff02463b8e61f1caf123ca4799c62347dcae34 | |
parent | 4476c07bae00dc2cec5183878d81b3e53ff3b97e (diff) |
Moves UBSAN macros from test files to Test_Options
To keep the code more readable change the behavior of
`Test_Options::no_avoid_undefined_behavior()`, instead of the conditionals
inside the tests.
`Test_Options::no_avoid_undefined_behavior()` will always return `true` if
UBSAN is inactive. This way all tests, including those that cause undefined
behaviour, will run. Once botan is compiled with UBSAN those tests will
be automatically skipped unless the `--no-avoid-undefined` is passed to the
test-bench.
-rw-r--r-- | src/tests/test_dl_group.cpp | 5 | ||||
-rw-r--r-- | src/tests/test_ffi.cpp | 4 | ||||
-rw-r--r-- | src/tests/tests.h | 9 | ||||
-rw-r--r-- | src/tests/unit_ecdsa.cpp | 4 |
4 files changed, 9 insertions, 13 deletions
diff --git a/src/tests/test_dl_group.cpp b/src/tests/test_dl_group.cpp index c9e654bd7..064cb2221 100644 --- a/src/tests/test_dl_group.cpp +++ b/src/tests/test_dl_group.cpp @@ -44,19 +44,16 @@ class DL_Group_Tests final : public Test "DL_Group uninitialized", []() { Botan::DL_Group dl; dl.get_p(); }); -#if defined(BOTAN_HAS_SANITIZER_UNDEFINED) if(Test::no_avoid_undefined_behavior()) { -#endif result.test_throws("Bad generator param", "Invalid argument DL_Group unknown PrimeType", []() { auto invalid_type = static_cast<Botan::DL_Group::PrimeType>(9); Botan::DL_Group dl(Test::rng(), invalid_type, 1024); }); -#if defined(BOTAN_HAS_SANITIZER_UNDEFINED) } -#endif + return result; } diff --git a/src/tests/test_ffi.cpp b/src/tests/test_ffi.cpp index 0d831f251..d5627a45f 100644 --- a/src/tests/test_ffi.cpp +++ b/src/tests/test_ffi.cpp @@ -842,18 +842,14 @@ class FFI_Unit_Tests final : public Test // delete of null is ok/ignored TEST_FFI_RC(0, botan_hash_destroy, (nullptr)); -#if defined(BOTAN_HAS_SANITIZER_UNDEFINED) if(Test::no_avoid_undefined_behavior()) { -#endif // Confirm that botan_x_destroy checks the argument type botan_mp_t mp; botan_mp_init(&mp); TEST_FFI_RC(BOTAN_FFI_ERROR_INVALID_OBJECT, botan_hash_destroy, (reinterpret_cast<botan_hash_t>(mp))); TEST_FFI_RC(0, botan_mp_destroy, (mp)); -#if defined(BOTAN_HAS_SANITIZER_UNDEFINED) } -#endif return result; } diff --git a/src/tests/tests.h b/src/tests/tests.h index 56aa4b8c5..8551e4e4d 100644 --- a/src/tests/tests.h +++ b/src/tests/tests.h @@ -97,7 +97,14 @@ class Test_Options bool abort_on_first_fail() const { return m_abort_on_first_fail; } - bool no_avoid_undefined_behavior() const { return m_no_avoid_undefined; } + bool no_avoid_undefined_behavior() const + { +#if defined(BOTAN_HAS_SANITIZER_UNDEFINED) + return m_no_avoid_undefined; +#else + return true; +#endif + } private: std::vector<std::string> m_requested_tests; diff --git a/src/tests/unit_ecdsa.cpp b/src/tests/unit_ecdsa.cpp index f94f445ee..e21d4764c 100644 --- a/src/tests/unit_ecdsa.cpp +++ b/src/tests/unit_ecdsa.cpp @@ -299,18 +299,14 @@ Test::Result test_encoding_options() result.test_eq("Hybrid point same size as uncompressed", enc_uncompressed.size(), enc_hybrid.size()); -#if defined(BOTAN_HAS_SANITIZER_UNDEFINED) if(Test::no_avoid_undefined_behavior()) { -#endif auto invalid_format = static_cast<Botan::PointGFp::Compression_Type>(99); result.test_throws("Invalid point format throws", "Invalid argument Invalid point encoding for EC_PublicKey", [&] { key.set_point_encoding(invalid_format); }); -#if defined(BOTAN_HAS_SANITIZER_UNDEFINED) } -#endif return result; } |