mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-20 03:25:13 +00:00
LibWeb/XML: Make namespace getter reject invalid qualified names
Names like ":hi", "wow:", or "a🅱️c" are invalid, so early-out instead
of searching our namespace stack for matching prefixes.
And also rename the function because it's relevant to attributes too.
This commit is contained in:
parent
7d797b2c32
commit
c99aac4bf0
Notes:
github-actions[bot]
2025-04-15 08:40:20 +00:00
Author: https://github.com/AtkinsSJ Commit: https://github.com/LadybirdBrowser/ladybird/commit/c99aac4bf07 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4321
2 changed files with 12 additions and 5 deletions
|
@ -116,7 +116,7 @@ void XMLDocumentBuilder::element_start(const XML::Name& name, HashMap<XML::Name,
|
|||
m_namespace_stack.last().depth += 1;
|
||||
}
|
||||
|
||||
auto namespace_ = namespace_for_element(name);
|
||||
auto namespace_ = namespace_for_name(name);
|
||||
|
||||
auto qualified_name_or_error = DOM::validate_and_extract(m_document->realm(), namespace_, FlyString(MUST(String::from_byte_string(name))));
|
||||
|
||||
|
@ -358,10 +358,17 @@ void XMLDocumentBuilder::document_end()
|
|||
m_document->set_ready_for_post_load_tasks(true);
|
||||
}
|
||||
|
||||
Optional<FlyString> XMLDocumentBuilder::namespace_for_element(XML::Name const& element_name)
|
||||
Optional<FlyString> XMLDocumentBuilder::namespace_for_name(XML::Name const& name)
|
||||
{
|
||||
Optional<ByteString> prefix;
|
||||
if (auto parts = element_name.split_limit(':', 2); parts.size() == 2) {
|
||||
Optional<StringView> prefix;
|
||||
|
||||
auto parts = name.split_limit(':', 3);
|
||||
if (parts.size() > 2)
|
||||
return {};
|
||||
|
||||
if (parts.size() == 2) {
|
||||
if (parts[0].is_empty() || parts[1].is_empty())
|
||||
return {};
|
||||
prefix = parts[0];
|
||||
}
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ private:
|
|||
virtual void comment(StringView data) override;
|
||||
virtual void document_end() override;
|
||||
|
||||
Optional<FlyString> namespace_for_element(XML::Name const& element_name);
|
||||
Optional<FlyString> namespace_for_name(XML::Name const&);
|
||||
|
||||
GC::Ref<DOM::Document> m_document;
|
||||
GC::Ptr<DOM::Node> m_current_node;
|
||||
|
|
Loading…
Add table
Reference in a new issue