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) {
switch (ch) {
case '\e':
append("\\u001B");
break;
case '\b':
append("\\b");
break;
@ -167,7 +164,10 @@ void StringBuilder::append_escaped_for_json(StringView const& string)
append("\\\\");
break;
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) {
switch (ch) {
case '\e':
TRY(append("\\u001B"));
break;
case '\b':
TRY(append("\\b"));
break;
@ -120,7 +117,10 @@ KResult KBufferBuilder::append_escaped_for_json(const StringView& string)
TRY(append("\\\\"));
break;
default:
TRY(append(ch));
if (ch >= 0 && ch <= 0x1f)
TRY(append(String::formatted("\\u{:04x}", ch)));
else
TRY(append(ch));
}
}
return KSuccess;