Skip to content

Commit a77c91f

Browse files
camillobruniV8 LUCI CQ
authored andcommitted
[promise] Harden PromiseHasUserDefinedRejectHandlerInternal
Add stricter checks for when the debugger is active. Bug: chromium:1370423, chromium:1364149 Change-Id: I336d9887fca0c5bd85b0bd8a6fa7db5d1aac0071 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3932177 Reviewed-by: Toon Verwaest <[email protected]> Reviewed-by: Leszek Swirski <[email protected]> Commit-Queue: Camillo Bruni <[email protected]> Cr-Commit-Position: refs/heads/main@{#83519}
1 parent 3dd9576 commit a77c91f

1 file changed

Lines changed: 8 additions & 6 deletions

File tree

src/execution/isolate.cc

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2807,13 +2807,15 @@ bool PromiseHasUserDefinedRejectHandlerInternal(Isolate* isolate,
28072807
Handle<PromiseCapability>::cast(promise_or_capability)->promise(),
28082808
isolate);
28092809
}
2810-
promise = Handle<JSPromise>::cast(promise_or_capability);
2811-
if (!reaction->reject_handler().IsUndefined(isolate)) {
2812-
Handle<JSReceiver> reject_handler(
2813-
JSReceiver::cast(reaction->reject_handler()), isolate);
2814-
if (PromiseIsRejectHandler(isolate, reject_handler)) return true;
2810+
if (promise_or_capability->IsJSPromise()) {
2811+
promise = Handle<JSPromise>::cast(promise_or_capability);
2812+
if (!reaction->reject_handler().IsUndefined(isolate)) {
2813+
Handle<JSReceiver> reject_handler(
2814+
JSReceiver::cast(reaction->reject_handler()), isolate);
2815+
if (PromiseIsRejectHandler(isolate, reject_handler)) return true;
2816+
}
2817+
if (isolate->PromiseHasUserDefinedRejectHandler(promise)) return true;
28152818
}
2816-
if (isolate->PromiseHasUserDefinedRejectHandler(promise)) return true;
28172819
}
28182820
current = handle(reaction->next(), isolate);
28192821
}

0 commit comments

Comments
 (0)