diff --git a/AK/UBSanitizer.h b/AK/UBSanitizer.h index 4b3742b80c..d2a17bd565 100644 --- a/AK/UBSanitizer.h +++ b/AK/UBSanitizer.h @@ -117,4 +117,10 @@ struct PointerOverflowData { SourceLocation location; }; +struct FloatCastOverflowData { + SourceLocation location; + TypeDescriptor const& from_type; + TypeDescriptor const& to_type; +}; + } diff --git a/Userland/Libraries/LibSanitizer/UBSanitizer.cpp b/Userland/Libraries/LibSanitizer/UBSanitizer.cpp index 9dd650eb80..15b27b93ee 100644 --- a/Userland/Libraries/LibSanitizer/UBSanitizer.cpp +++ b/Userland/Libraries/LibSanitizer/UBSanitizer.cpp @@ -231,4 +231,11 @@ void __ubsan_handle_pointer_overflow(const PointerOverflowData& data, ValueHandl } print_location(data.location); } + +void __ubsan_handle_float_cast_overflow(const FloatCastOverflowData&, ValueHandle) __attribute__((used)); +void __ubsan_handle_float_cast_overflow(const FloatCastOverflowData& data, ValueHandle) +{ + WARNLN_AND_DBGLN("UBSAN: overflow when casting from {} to {}", data.from_type.name(), data.to_type.name()); + print_location(data.location); +} }