Firefox · SpiderMonkey
CVE-2026-100765
Logic Error in SpiderMonkey
Overview
High
Severity
—
CVSS
No
Exploited ITW
Fixed
Fix Status
Files Changed
js/src/jit/CodeGenerator.cpp
Patch
diff --git a/js/src/jit/CodeGenerator.cpp b/js/src/jit/CodeGenerator.cpp
index d0c6802df95..8e6ec503835 100644
--- a/js/src/jit/CodeGenerator.cpp
+++ b/js/src/jit/CodeGenerator.cpp
@@ -10619,12 +10619,10 @@ void CodeGenerator::visitWasmCall(LWasmCall* lir) {
switchRealm = false;
break;
case wasm::CalleeDesc::BuiltinInstanceMethod: {
- CodeOffset unused_trapStackMapKey;
- masm.wasmCallBuiltinInstanceMethod(desc, callBase->instanceArg(),
- callee.builtin(),
- callBase->builtinMethodFailureMode(),
- callBase->builtinMethodFailureTrap(),
- &retOffset, &unused_trapStackMapKey);
+ masm.wasmCallBuiltinInstanceMethod(
+ desc, callBase->instanceArg(), callee.builtin(),
+ callBase->builtinMethodFailureMode(),
+ callBase->builtinMethodFailureTrap(), &retOffset, &secondRetOffset);
// The builtin ABI preserves the instance and pinned registers. However,
// builtins may grow the memory which requires us to reload the pinned
// registers.
@@ -10671,7 +10669,9 @@ void CodeGenerator::visitWasmCall(LWasmCall* lir) {
// single stackmap serves both: register this call's LSafepoint a second time
// at the slow-path return offset.
if (callee.which() == wasm::CalleeDesc::WasmTable ||
- callee.which() == wasm::CalleeDesc::FuncRef) {
+ callee.which() == wasm::CalleeDesc::FuncRef ||
+ (callee.which() == wasm::CalleeDesc::BuiltinInstanceMethod &&
+ secondRetOffset.bound())) {
markSafepointAt(secondRetOffset.offset(), lir);
}
Loading diff…
References
On This Page