fix: RenderFrameHost nullptr dereference (#45487)

* fix: add nullptr tests before using render_frame_

* refactor: extract-method HasRenderFrame()
This commit is contained in:
Charles Kerr 2025-02-06 22:02:57 -06:00 committed by GitHub
parent 517935cd55
commit 67f5ac5bbc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 5 deletions

View file

@ -183,7 +183,7 @@ void WebFrameMain::UpdateRenderFrameHost(content::RenderFrameHost* rfh) {
}
bool WebFrameMain::CheckRenderFrame() const {
if (render_frame_disposed_) {
if (!HasRenderFrame()) {
v8::Isolate* isolate = JavascriptEnvironment::GetIsolate();
v8::HandleScope scope(isolate);
gin_helper::ErrorThrower(isolate).ThrowError(
@ -435,7 +435,7 @@ v8::Local<v8::Promise> WebFrameMain::CollectDocumentJSCallStack(
gin_helper::Promise<base::Value> promise(args->isolate());
v8::Local<v8::Promise> handle = promise.GetHandle();
if (render_frame_disposed_) {
if (!HasRenderFrame()) {
promise.RejectWithErrorMessage(
"Render frame was disposed before WebFrameMain could be accessed");
return handle;
@ -463,7 +463,7 @@ void WebFrameMain::CollectedJavaScriptCallStack(
gin_helper::Promise<base::Value> promise,
const std::string& untrusted_javascript_call_stack,
const std::optional<blink::LocalFrameToken>& remote_frame_token) {
if (render_frame_disposed_) {
if (!HasRenderFrame()) {
promise.RejectWithErrorMessage(
"Render frame was disposed before call stack was received");
return;