1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 01:47:34 +00:00

AK+Kernel: Avoid unescaped control chars in append_escaped_for_json()

Otherwise it could produce invalid JSON.
This commit is contained in:
Ali Mohammad Pur 2021-09-11 16:50:31 +04:30 committed by Ali Mohammad Pur
parent e1e91f6c85
commit 27e3589f61
2 changed files with 8 additions and 8 deletions

View file

@ -148,9 +148,6 @@ void StringBuilder::append_escaped_for_json(StringView const& string)
{ {
for (auto ch : string) { for (auto ch : string) {
switch (ch) { switch (ch) {
case '\e':
append("\\u001B");
break;
case '\b': case '\b':
append("\\b"); append("\\b");
break; break;
@ -167,7 +164,10 @@ void StringBuilder::append_escaped_for_json(StringView const& string)
append("\\\\"); append("\\\\");
break; break;
default: default:
append(ch); if (ch >= 0 && ch <= 0x1f)
append(String::formatted("\\u{:04x}", ch));
else
append(ch);
} }
} }
} }

View file

@ -101,9 +101,6 @@ KResult KBufferBuilder::append_escaped_for_json(const StringView& string)
{ {
for (auto ch : string) { for (auto ch : string) {
switch (ch) { switch (ch) {
case '\e':
TRY(append("\\u001B"));
break;
case '\b': case '\b':
TRY(append("\\b")); TRY(append("\\b"));
break; break;
@ -120,7 +117,10 @@ KResult KBufferBuilder::append_escaped_for_json(const StringView& string)
TRY(append("\\\\")); TRY(append("\\\\"));
break; break;
default: default:
TRY(append(ch)); if (ch >= 0 && ch <= 0x1f)
TRY(append(String::formatted("\\u{:04x}", ch)));
else
TRY(append(ch));
} }
} }
return KSuccess; return KSuccess;