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:
Stephan Aßmus
2014-10-02 22:57:49 +02:00
parent f262f1b66e
commit f532d965bf
+17 -6
View File
@@ -91,8 +91,7 @@ public:
fString << ",\""; fString << ",\"";
else else
fString << '"'; fString << '"';
// TODO: Escape item fString << _EscapeString(item);
fString << item;
fString << '"'; fString << '"';
} }
fInList = true; fInList = true;
@@ -112,8 +111,7 @@ public:
fString << "null"; fString << "null";
} else { } else {
fString << '"'; fString << '"';
// TODO: Escape value fString << _EscapeString(value);
fString << value;
fString << '"'; fString << '"';
} }
fInList = true; fInList = true;
@@ -152,11 +150,24 @@ private:
fString << ",\""; fString << ",\"";
else else
fString << '"'; fString << '"';
// TODO: Escape name fString << _EscapeString(name);
fString << name;
fString << "\":"; 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: private:
BString fString; BString fString;
bool fInList; bool fInList;