🚨 suppress UBSAN warning
This commit is contained in:
parent
5fb2b7ec55
commit
7d4f2f4ec0
@ -166,6 +166,21 @@ struct SaxEventLoggerExitAfterStartArray : public SaxEventLogger
|
|||||||
};
|
};
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
// Passing a NULL pointer to the input adapter violates its NON_NULL attribute which is detected by UBSAN.
|
||||||
|
// To still test whether exceptions are thrown, we need to exclude these tests from UBSAN which can only
|
||||||
|
// be done with a function attribute. See
|
||||||
|
// https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html#disabling-instrumentation-with-attribute-no-sanitize-undefined
|
||||||
|
#if defined(__clang__)
|
||||||
|
__attribute__((no_sanitize("undefined")))
|
||||||
|
#endif
|
||||||
|
void test_file_exception()
|
||||||
|
{
|
||||||
|
std::FILE* f = std::fopen("nonexisting_file", "r"); // NOLINT(cppcoreguidelines-owning-memory)
|
||||||
|
json _;
|
||||||
|
CHECK_THROWS_WITH_AS(_ = json::parse(f), "[json.exception.parse_error.116] parse error: input file is invalid", json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH_AS(_ = json::accept(f), "[json.exception.parse_error.116] parse error: input file is invalid", json::parse_error&);
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("deserialization")
|
TEST_CASE("deserialization")
|
||||||
{
|
{
|
||||||
SECTION("successful deserialization")
|
SECTION("successful deserialization")
|
||||||
@ -335,10 +350,7 @@ TEST_CASE("deserialization")
|
|||||||
|
|
||||||
SECTION("FILE*")
|
SECTION("FILE*")
|
||||||
{
|
{
|
||||||
std::FILE* f = std::fopen("nonexisting_file", "r"); // NOLINT(cppcoreguidelines-owning-memory)
|
test_file_exception();
|
||||||
json _;
|
|
||||||
CHECK_THROWS_WITH_AS(_ = json::parse(f), "[json.exception.parse_error.116] parse error: input file is invalid", json::parse_error&);
|
|
||||||
CHECK_THROWS_WITH_AS(_ = json::accept(f), "[json.exception.parse_error.116] parse error: input file is invalid", json::parse_error&);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user