summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Kaster <akaster@serenityos.org>2022-12-23 22:22:41 -0700
committerAndrew Kaster <andrewdkaster@gmail.com>2022-12-25 07:58:58 -0700
commit8d015bd71c23ea4cbc964139569797d687b1230c (patch)
treec54c16bf45c3697ca83006ff04af1ba983ad0c03
parent4ae2a54f3dc8f5066811f7c9b4fcd613a1d230c9 (diff)
downloadserenity-8d015bd71c23ea4cbc964139569797d687b1230c.zip
test-wasm: Don't cast signed values to unsigned types in wasm_invoke
If a negative value ends up in one of the arguments for an invoked function, we don't want to cast it from a floating point type to an unsigned type. This fixes a float-cast-overflow UBSAN error on macOS with llvm 15.0.6.
-rw-r--r--Tests/LibWasm/test-wasm.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/Tests/LibWasm/test-wasm.cpp b/Tests/LibWasm/test-wasm.cpp
index 122d2cbdf7..44bc43d7a5 100644
--- a/Tests/LibWasm/test-wasm.cpp
+++ b/Tests/LibWasm/test-wasm.cpp
@@ -211,14 +211,14 @@ JS_DEFINE_NATIVE_FUNCTION(WebAssemblyModule::wasm_invoke)
double_value = TRY(argument.to_double(vm));
switch (param.kind()) {
case Wasm::ValueType::Kind::I32:
- arguments.append(Wasm::Value(param, static_cast<u64>(double_value)));
+ arguments.append(Wasm::Value(param, static_cast<i64>(double_value)));
break;
case Wasm::ValueType::Kind::I64:
if (argument.is_bigint()) {
auto value = TRY(argument.to_bigint_int64(vm));
- arguments.append(Wasm::Value(param, bit_cast<u64>(value)));
+ arguments.append(Wasm::Value(param, value));
} else {
- arguments.append(Wasm::Value(param, static_cast<u64>(double_value)));
+ arguments.append(Wasm::Value(param, static_cast<i64>(double_value)));
}
break;
case Wasm::ValueType::Kind::F32: