提交 2017cfd6 编写于 作者: M Marek Habersack

[asp.net] ScriptResourceHandler must correctly encode script literals.

上级 d38b8f4e
......@@ -51,12 +51,44 @@ namespace System.Web.Handlers
#endregion
// TODO: optimize
static string GetScriptStringLiteral (string value) {
string s = value;
s = s.Replace ("\\", "\\\\");
s = s.Replace ("\"", "\\\"");
return "\"" + s + "\"";
// TODO: add value cache?
static string GetScriptStringLiteral (string value)
{
if (String.IsNullOrEmpty (value))
return "\"" + value + "\"";
var sb = new StringBuilder ("\"");
for (int i = 0; i < value.Length; i++) {
char ch = value [i];
switch (ch) {
case '\'':
sb.Append ("\\u0027");
break;
case '"':
sb.Append ("\\\"");
break;
case '\\':
sb.Append ("\\\\");
break;
case '\n':
sb.Append ("\\n");
break;
case '\r':
sb.Append ("\\r");
break;
default:
sb.Append (ch);
break;
}
}
sb.Append ("\"");
return sb.ToString ();
}
class ResourceKey
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册