From 0d74ced9b5e9245e820b2d360a28d00f4d744fad Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 3 Dec 2023 23:21:32 +0100 Subject: [PATCH] LibWeb: Don't crash on Document.createElement() with emoji in tag name Once again, we were mistakenly using StringBuilder's append(char) when we really wanted append_code_point(u32). --- .../expected/DOM/createElement-with-emoji-in-tag-name.txt | 1 + .../input/DOM/createElement-with-emoji-in-tag-name.html | 7 +++++++ Userland/Libraries/LibWeb/Infra/Strings.cpp | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 Tests/LibWeb/Text/expected/DOM/createElement-with-emoji-in-tag-name.txt create mode 100644 Tests/LibWeb/Text/input/DOM/createElement-with-emoji-in-tag-name.html diff --git a/Tests/LibWeb/Text/expected/DOM/createElement-with-emoji-in-tag-name.txt b/Tests/LibWeb/Text/expected/DOM/createElement-with-emoji-in-tag-name.txt new file mode 100644 index 0000000000..35c957db0f --- /dev/null +++ b/Tests/LibWeb/Text/expected/DOM/createElement-with-emoji-in-tag-name.txt @@ -0,0 +1 @@ +PASS (Didn't crash) diff --git a/Tests/LibWeb/Text/input/DOM/createElement-with-emoji-in-tag-name.html b/Tests/LibWeb/Text/input/DOM/createElement-with-emoji-in-tag-name.html new file mode 100644 index 0000000000..edac3a49ee --- /dev/null +++ b/Tests/LibWeb/Text/input/DOM/createElement-with-emoji-in-tag-name.html @@ -0,0 +1,7 @@ + + diff --git a/Userland/Libraries/LibWeb/Infra/Strings.cpp b/Userland/Libraries/LibWeb/Infra/Strings.cpp index c4321850b8..e71fedeaba 100644 --- a/Userland/Libraries/LibWeb/Infra/Strings.cpp +++ b/Userland/Libraries/LibWeb/Infra/Strings.cpp @@ -113,7 +113,7 @@ ErrorOr to_ascii_uppercase(StringView string) auto utf8_view = Utf8View { string }; for (u32 code_point : utf8_view) { code_point = AK::to_ascii_uppercase(code_point); - TRY(string_builder.try_append(code_point)); + string_builder.append_code_point(code_point); } return string_builder.to_string(); }