HaikuDepot: Escape strings in the JSON builder
Fixes uploading comments which use any char that needs to be escaped. Such as line-breaks, " or \.
This commit is contained in:
@@ -91,8 +91,7 @@ public:
|
||||
fString << ",\"";
|
||||
else
|
||||
fString << '"';
|
||||
// TODO: Escape item
|
||||
fString << item;
|
||||
fString << _EscapeString(item);
|
||||
fString << '"';
|
||||
}
|
||||
fInList = true;
|
||||
@@ -112,8 +111,7 @@ public:
|
||||
fString << "null";
|
||||
} else {
|
||||
fString << '"';
|
||||
// TODO: Escape value
|
||||
fString << value;
|
||||
fString << _EscapeString(value);
|
||||
fString << '"';
|
||||
}
|
||||
fInList = true;
|
||||
@@ -152,11 +150,24 @@ private:
|
||||
fString << ",\"";
|
||||
else
|
||||
fString << '"';
|
||||
// TODO: Escape name
|
||||
fString << name;
|
||||
fString << _EscapeString(name);
|
||||
fString << "\":";
|
||||
}
|
||||
|
||||
BString _EscapeString(const char* original) const
|
||||
{
|
||||
BString string(original);
|
||||
string.ReplaceAll("\\", "\\\\");
|
||||
string.ReplaceAll("\"", "\\\"");
|
||||
string.ReplaceAll("/", "\\/");
|
||||
string.ReplaceAll("\b", "\\b");
|
||||
string.ReplaceAll("\f", "\\f");
|
||||
string.ReplaceAll("\n", "\\n");
|
||||
string.ReplaceAll("\r", "\\r");
|
||||
string.ReplaceAll("\t", "\\t");
|
||||
return string;
|
||||
}
|
||||
|
||||
private:
|
||||
BString fString;
|
||||
bool fInList;
|
||||
|
||||
Reference in New Issue
Block a user