From 3829e91662c2f139d9514aa1b5ede4462000f43a Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Fri, 16 Aug 2024 12:49:56 -0400 Subject: [PATCH] Handle failed string conversions in console.log. (#33085) Signed-off-by: Josh Matthews --- components/script/dom/bindings/conversions.rs | 1 + components/script/dom/console.rs | 3 +++ 2 files changed, 4 insertions(+) diff --git a/components/script/dom/bindings/conversions.rs b/components/script/dom/bindings/conversions.rs index 15087fe5a0f..cd092814e0a 100644 --- a/components/script/dom/bindings/conversions.rs +++ b/components/script/dom/bindings/conversions.rs @@ -221,6 +221,7 @@ impl FromJSValConvertible for DOMString { /// Convert the given `JSString` to a `DOMString`. Fails if the string does not /// contain valid UTF-16. pub unsafe fn jsstring_to_str(cx: *mut JSContext, s: *mut JSString) -> DOMString { + assert!(!s.is_null()); let latin1 = JS_DeprecatedStringHasLatin1Chars(s); DOMString::from_string(if latin1 { latin1_to_string(cx, s) diff --git a/components/script/dom/console.rs b/components/script/dom/console.rs index f1e21b5897b..ae041dfa7da 100644 --- a/components/script/dom/console.rs +++ b/components/script/dom/console.rs @@ -73,6 +73,9 @@ where unsafe fn handle_value_to_string(cx: *mut jsapi::JSContext, value: HandleValue) -> DOMString { rooted!(in(cx) let mut js_string = std::ptr::null_mut::()); js_string.set(JS_ValueToSource(cx, value)); + if js_string.is_null() { + return "".into(); + } jsstring_to_str(cx, *js_string) }