summaryrefslogtreecommitdiffstats
path: root/core/java/android/util
diff options
context:
space:
mode:
authorJesse Wilson <jessewilson@google.com>2011-07-18 12:55:09 -0700
committerJesse Wilson <jessewilson@google.com>2011-07-18 12:56:42 -0700
commit0fc0edfd273f9d92b9f9fe4f49382b11104f55f0 (patch)
tree7709479c08da73e5136b28c7a99906016180271c /core/java/android/util
parent2ad31117591816ecc6c52f07459aef987b025462 (diff)
downloadframeworks_base-0fc0edfd273f9d92b9f9fe4f49382b11104f55f0.zip
frameworks_base-0fc0edfd273f9d92b9f9fe4f49382b11104f55f0.tar.gz
frameworks_base-0fc0edfd273f9d92b9f9fe4f49382b11104f55f0.tar.bz2
Always escape chars that JavaScript treats as newlines.
Related GSON Bug: http://code.google.com/p/google-gson/issues/detail?id=341 Change-Id: I41b1615c4b3b4526f2223a75191f9b0699cdda12
Diffstat (limited to 'core/java/android/util')
-rw-r--r--core/java/android/util/JsonWriter.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/core/java/android/util/JsonWriter.java b/core/java/android/util/JsonWriter.java
index 47e84c5..c1e6e40 100644
--- a/core/java/android/util/JsonWriter.java
+++ b/core/java/android/util/JsonWriter.java
@@ -407,6 +407,11 @@ public final class JsonWriter implements Closeable {
* quotation marks except for the characters that must be escaped:
* quotation mark, reverse solidus, and the control characters
* (U+0000 through U+001F)."
+ *
+ * We also escape '\u2028' and '\u2029', which JavaScript interprets
+ * as newline characters. This prevents eval() from failing with a
+ * syntax error.
+ * http://code.google.com/p/google-gson/issues/detail?id=341
*/
switch (c) {
case '"':
@@ -435,6 +440,11 @@ public final class JsonWriter implements Closeable {
out.write("\\f");
break;
+ case '\u2028':
+ case '\u2029':
+ out.write(String.format("\\u%04x", (int) c));
+ break;
+
default:
if (c <= 0x1F) {
out.write(String.format("\\u%04x", (int) c));