Title: [259636] trunk
Revision
259636
Author
ysuz...@apple.com
Date
2020-04-07 08:48:08 -0700 (Tue, 07 Apr 2020)

Log Message

[JSC] $.evalScript should check exception when accessing "global"
https://bugs.webkit.org/show_bug.cgi?id=210114
<rdar://problem/61388482>

Reviewed by Keith Miller.

JSTests:

* stress/eval-script-global-access-exception-check.js: Added.
(shouldThrow):

Source/_javascript_Core:

$.evalScript should check exception after "global" property access since it can throw an error if it is an accessor.

* jsc.cpp:
(functionDollarEvalScript):

Modified Paths

Added Paths

Diff

Modified: trunk/JSTests/ChangeLog (259635 => 259636)


--- trunk/JSTests/ChangeLog	2020-04-07 15:23:33 UTC (rev 259635)
+++ trunk/JSTests/ChangeLog	2020-04-07 15:48:08 UTC (rev 259636)
@@ -1,3 +1,14 @@
+2020-04-07  Yusuke Suzuki  <ysuz...@apple.com>
+
+        [JSC] $.evalScript should check exception when accessing "global"
+        https://bugs.webkit.org/show_bug.cgi?id=210114
+        <rdar://problem/61388482>
+
+        Reviewed by Keith Miller.
+
+        * stress/eval-script-global-access-exception-check.js: Added.
+        (shouldThrow):
+
 2020-04-06  Rick Waldron  <waldron.r...@gmail.com> and Alexey Shvayka  <shvaikal...@gmail.com>
 
         Remove unnecessary Test262 harness file and implement $262.IsHTMLDDA

Added: trunk/JSTests/stress/eval-script-global-access-exception-check.js (0 => 259636)


--- trunk/JSTests/stress/eval-script-global-access-exception-check.js	                        (rev 0)
+++ trunk/JSTests/stress/eval-script-global-access-exception-check.js	2020-04-07 15:48:08 UTC (rev 259636)
@@ -0,0 +1,20 @@
+function shouldThrow(func, errorMessage) {
+    var errorThrown = false;
+    var error = null;
+    try {
+        func();
+    } catch (e) {
+        errorThrown = true;
+        error = e;
+    }
+    if (!errorThrown)
+        throw new Error('not thrown');
+    if (String(error) !== errorMessage)
+        throw new Error(`bad error: ${String(error)}`);
+}
+
+const o = {};
+o.__proto__ = RegExp();
+shouldThrow(() => {
+    $.evalScript.call(o);
+}, `TypeError: The RegExp.prototype.global getter can only be called on a RegExp object`);

Modified: trunk/Source/_javascript_Core/ChangeLog (259635 => 259636)


--- trunk/Source/_javascript_Core/ChangeLog	2020-04-07 15:23:33 UTC (rev 259635)
+++ trunk/Source/_javascript_Core/ChangeLog	2020-04-07 15:48:08 UTC (rev 259636)
@@ -1,3 +1,16 @@
+2020-04-07  Yusuke Suzuki  <ysuz...@apple.com>
+
+        [JSC] $.evalScript should check exception when accessing "global"
+        https://bugs.webkit.org/show_bug.cgi?id=210114
+        <rdar://problem/61388482>
+
+        Reviewed by Keith Miller.
+
+        $.evalScript should check exception after "global" property access since it can throw an error if it is an accessor.
+
+        * jsc.cpp:
+        (functionDollarEvalScript):
+
 2020-04-06  Devin Rousso  <drou...@apple.com>
 
         Web Inspector: `console.log(...)` appear as `CONSOLE LOG LOG` in the system console

Modified: trunk/Source/_javascript_Core/jsc.cpp (259635 => 259636)


--- trunk/Source/_javascript_Core/jsc.cpp	2020-04-07 15:23:33 UTC (rev 259635)
+++ trunk/Source/_javascript_Core/jsc.cpp	2020-04-07 15:48:08 UTC (rev 259636)
@@ -1859,9 +1859,10 @@
     String sourceCode = callFrame->argument(0).toWTFString(globalObject);
     RETURN_IF_EXCEPTION(scope, encodedJSValue());
     
-    GlobalObject* realm = jsDynamicCast<GlobalObject*>(vm,
-        callFrame->thisValue().get(globalObject, Identifier::fromString(vm, "global")));
+    JSValue global = callFrame->thisValue().get(globalObject, Identifier::fromString(vm, "global"));
     RETURN_IF_EXCEPTION(scope, encodedJSValue());
+    GlobalObject* realm = jsDynamicCast<GlobalObject*>(vm, global);
+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
     if (!realm)
         return JSValue::encode(throwException(globalObject, scope, createError(globalObject, "Expected global to point to a global object"_s)));
     
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to