mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-06 09:01:53 +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: c99aac4bf0
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];
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue