Title: [286349] trunk/Source/WebCore
Revision
286349
Author
[email protected]
Date
2021-11-30 22:11:56 -0800 (Tue, 30 Nov 2021)

Log Message

Null check value returned by WorkerOrWorkletGlobalScope::script()
https://bugs.webkit.org/show_bug.cgi?id=233655

Reviewed by Darin Adler.

Null check value returned by WorkerOrWorkletGlobalScope::script() since it can in theory be null
(it gets cleared in prepareForDestruction()).

* bindings/js/JSDOMConvertPromise.h:
(WebCore::Converter<IDLPromise<T>>::convert):
* bindings/js/JSDOMPromiseDeferred.cpp:
(WebCore::DeferredPromise::handleTerminationExceptionIfNeeded):
* bindings/js/JSEventListener.cpp:
(WebCore::JSEventListener::handleEvent):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (286348 => 286349)


--- trunk/Source/WebCore/ChangeLog	2021-12-01 05:29:56 UTC (rev 286348)
+++ trunk/Source/WebCore/ChangeLog	2021-12-01 06:11:56 UTC (rev 286349)
@@ -1,3 +1,20 @@
+2021-11-30  Chris Dumez  <[email protected]>
+
+        Null check value returned by WorkerOrWorkletGlobalScope::script()
+        https://bugs.webkit.org/show_bug.cgi?id=233655
+
+        Reviewed by Darin Adler.
+
+        Null check value returned by WorkerOrWorkletGlobalScope::script() since it can in theory be null
+        (it gets cleared in prepareForDestruction()).
+
+        * bindings/js/JSDOMConvertPromise.h:
+        (WebCore::Converter<IDLPromise<T>>::convert):
+        * bindings/js/JSDOMPromiseDeferred.cpp:
+        (WebCore::DeferredPromise::handleTerminationExceptionIfNeeded):
+        * bindings/js/JSEventListener.cpp:
+        (WebCore::JSEventListener::handleEvent):
+
 2021-11-30  Mark Lam  <[email protected]>
 
         Move Subspaces from VM to Heap.

Modified: trunk/Source/WebCore/bindings/js/JSDOMConvertPromise.h (286348 => 286349)


--- trunk/Source/WebCore/bindings/js/JSDOMConvertPromise.h	2021-12-01 05:29:56 UTC (rev 286348)
+++ trunk/Source/WebCore/bindings/js/JSDOMConvertPromise.h	2021-12-01 06:11:56 UTC (rev 286349)
@@ -51,10 +51,10 @@
         if (scope.exception()) {
             auto* scriptExecutionContext = globalObject->scriptExecutionContext();
             if (is<WorkerGlobalScope>(scriptExecutionContext)) {
-                auto& scriptController = *downcast<WorkerGlobalScope>(*scriptExecutionContext).script();
+                auto* scriptController = downcast<WorkerGlobalScope>(*scriptExecutionContext).script();
                 bool terminatorCausedException = vm.isTerminationException(scope.exception());
-                if (terminatorCausedException || scriptController.isTerminatingExecution()) {
-                    scriptController.forbidExecution();
+                if (terminatorCausedException || (scriptController && scriptController->isTerminatingExecution())) {
+                    scriptController->forbidExecution();
                     return nullptr;
                 }
             }

Modified: trunk/Source/WebCore/bindings/js/JSDOMPromiseDeferred.cpp (286348 => 286349)


--- trunk/Source/WebCore/bindings/js/JSDOMPromiseDeferred.cpp	2021-12-01 05:29:56 UTC (rev 286348)
+++ trunk/Source/WebCore/bindings/js/JSDOMPromiseDeferred.cpp	2021-12-01 06:11:56 UTC (rev 286349)
@@ -274,10 +274,10 @@
 
     auto& scriptExecutionContext = *lexicalGlobalObject.scriptExecutionContext();
     if (is<WorkerGlobalScope>(scriptExecutionContext)) {
-        auto& scriptController = *downcast<WorkerGlobalScope>(scriptExecutionContext).script();
+        auto* scriptController = downcast<WorkerGlobalScope>(scriptExecutionContext).script();
         bool terminatorCausedException = vm.isTerminationException(exception);
-        if (terminatorCausedException || scriptController.isTerminatingExecution()) {
-            scriptController.forbidExecution();
+        if (terminatorCausedException || (scriptController && scriptController->isTerminatingExecution())) {
+            scriptController->forbidExecution();
             return true;
         }
     }

Modified: trunk/Source/WebCore/bindings/js/JSEventListener.cpp (286348 => 286349)


--- trunk/Source/WebCore/bindings/js/JSEventListener.cpp	2021-12-01 05:29:56 UTC (rev 286348)
+++ trunk/Source/WebCore/bindings/js/JSEventListener.cpp	2021-12-01 06:11:56 UTC (rev 286349)
@@ -195,10 +195,10 @@
 
     auto handleExceptionIfNeeded = [&] (JSC::Exception* exception) -> bool {
         if (is<WorkerGlobalScope>(scriptExecutionContext)) {
-            auto& scriptController = *downcast<WorkerGlobalScope>(scriptExecutionContext).script();
+            auto* scriptController = downcast<WorkerGlobalScope>(scriptExecutionContext).script();
             bool terminatorCausedException = (exception && vm.isTerminationException(exception));
-            if (terminatorCausedException || scriptController.isTerminatingExecution())
-                scriptController.forbidExecution();
+            if (terminatorCausedException || (scriptController && scriptController->isTerminatingExecution()))
+                scriptController->forbidExecution();
         }
 
         if (exception) {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to