From 093f1dd805f699801079f55d0d490d80b463ccbb Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 19 Jul 2024 14:57:23 +0200 Subject: [PATCH] LibWeb: Propagate exceptions from setAttribute() in DOMStringMap setter We were incorrectly assuming that setAttribute() could never fail here, even when passed an invalid name. Found by Domato. --- .../DOM/DOMStringMap-setter-with-invalid-name.txt | 1 + .../DOM/DOMStringMap-setter-with-invalid-name.html | 12 ++++++++++++ Userland/Libraries/LibWeb/HTML/DOMStringMap.cpp | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 Tests/LibWeb/Text/expected/DOM/DOMStringMap-setter-with-invalid-name.txt create mode 100644 Tests/LibWeb/Text/input/DOM/DOMStringMap-setter-with-invalid-name.html diff --git a/Tests/LibWeb/Text/expected/DOM/DOMStringMap-setter-with-invalid-name.txt b/Tests/LibWeb/Text/expected/DOM/DOMStringMap-setter-with-invalid-name.txt new file mode 100644 index 00000000000..05600d9cef4 --- /dev/null +++ b/Tests/LibWeb/Text/expected/DOM/DOMStringMap-setter-with-invalid-name.txt @@ -0,0 +1 @@ +Setting DOMStringMap with an invalid name key throws? true diff --git a/Tests/LibWeb/Text/input/DOM/DOMStringMap-setter-with-invalid-name.html b/Tests/LibWeb/Text/input/DOM/DOMStringMap-setter-with-invalid-name.html new file mode 100644 index 00000000000..f5bd116db20 --- /dev/null +++ b/Tests/LibWeb/Text/input/DOM/DOMStringMap-setter-with-invalid-name.html @@ -0,0 +1,12 @@ + + diff --git a/Userland/Libraries/LibWeb/HTML/DOMStringMap.cpp b/Userland/Libraries/LibWeb/HTML/DOMStringMap.cpp index cea0e51cbc5..1c7532860d5 100644 --- a/Userland/Libraries/LibWeb/HTML/DOMStringMap.cpp +++ b/Userland/Libraries/LibWeb/HTML/DOMStringMap.cpp @@ -165,7 +165,7 @@ WebIDL::ExceptionOr DOMStringMap::set_value_of_new_named_property(String c // FIXME: 4. If name does not match the XML Name production, throw an "InvalidCharacterError" DOMException. // 5. Set an attribute value for the DOMStringMap's associated element using name and value. - MUST(m_associated_element->set_attribute(data_name, value)); + TRY(m_associated_element->set_attribute(data_name, value)); return {}; }