Przeglądaj źródła

LibWeb: Null check container while creating srcdoc navigation params

Fixes https://github.com/SerenityOS/serenity/issues/21205
Fixes https://github.com/SerenityOS/serenity/issues/21240
Aliaksandr Kalenik 1 rok temu
rodzic
commit
b43b3d2f8d
1 zmienionych plików z 7 dodań i 1 usunięć
  1. 7 1
      Userland/Libraries/LibWeb/HTML/Navigable.cpp

+ 7 - 1
Userland/Libraries/LibWeb/HTML/Navigable.cpp

@@ -502,7 +502,13 @@ static WebIDL::ExceptionOr<NavigationParams> create_navigation_params_from_a_src
     Optional<PolicyContainer> history_policy_container = entry->document_state->history_policy_container().visit(
         [](PolicyContainer const& c) -> Optional<PolicyContainer> { return c; },
         [](DocumentState::Client) -> Optional<PolicyContainer> { return {}; });
-    auto policy_container = determine_navigation_params_policy_container(*response->url(), history_policy_container, {}, navigable->container_document()->policy_container(), {});
+    PolicyContainer policy_container;
+    if (navigable->container()) {
+        // NOTE: Specification assumes that only navigables corresponding to iframes can be navigated to about:srcdoc.
+        //       We also use srcdoc to implement load_html() for top level navigables so we need to null check container
+        //       because it might be null.
+        policy_container = determine_navigation_params_policy_container(*response->url(), history_policy_container, {}, navigable->container_document()->policy_container(), {});
+    }
 
     // 7. Return a new navigation params, with
     //    id: navigationId