[tor-commits] [onionoo/master] Don't escape `/` before feeding strings into Gson.

karsten at torproject.org karsten at torproject.org
Fri Feb 27 13:07:32 UTC 2015


commit 1b3a455719e333764b76aa012e51674b6f7e1c56
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Wed Feb 25 12:03:26 2015 +0100

    Don't escape `/` before feeding strings into Gson.
    
    We escape a few characters in strings before feeding them into Gson,
    including backslashes, double quotes, \b, \n, \t, \f, \r, and non-ASCII
    characters.  But we also escape `/` to `\/` which we did not change back
    after receiving Gson's output.  We should simply stop escaping forward
    slashes, because Gson leaves them untouched.  The easiest way to change
    this is to switch from escapeEcmaScript to escapeJava which also saves us
    the effort of undoing the escaping of `'`.
    
    Fixes #13267.
---
 src/main/java/org/torproject/onionoo/docs/DetailsDocument.java |    7 ++-----
 src/main/java/org/torproject/onionoo/docs/DetailsStatus.java   |    7 ++-----
 2 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/src/main/java/org/torproject/onionoo/docs/DetailsDocument.java b/src/main/java/org/torproject/onionoo/docs/DetailsDocument.java
index 99a98cb..d4efdc0 100644
--- a/src/main/java/org/torproject/onionoo/docs/DetailsDocument.java
+++ b/src/main/java/org/torproject/onionoo/docs/DetailsDocument.java
@@ -8,7 +8,6 @@ import java.util.Map;
 import java.util.SortedSet;
 
 import org.apache.commons.lang3.StringEscapeUtils;
-import org.apache.commons.lang3.StringUtils;
 
 public class DetailsDocument extends Document {
 
@@ -21,12 +20,10 @@ public class DetailsDocument extends Document {
    * we'll have to do is to change back the '\\' that Gson writes for the
    * '\'. */
   private static String escapeJSON(String s) {
-    return StringUtils.replaceEach(StringEscapeUtils.escapeEcmaScript(s),
-        new String[] { "\\'" }, new String[] { "'" });
+    return StringEscapeUtils.escapeJava(s);
   }
   private static String unescapeJSON(String s) {
-    return StringEscapeUtils.unescapeEcmaScript(StringUtils.replaceEach(s,
-        new String[] { "'" }, new String[] { "\\'" }));
+    return StringEscapeUtils.unescapeJava(s);
   }
 
   private String nickname;
diff --git a/src/main/java/org/torproject/onionoo/docs/DetailsStatus.java b/src/main/java/org/torproject/onionoo/docs/DetailsStatus.java
index ff951ce..fe46416 100644
--- a/src/main/java/org/torproject/onionoo/docs/DetailsStatus.java
+++ b/src/main/java/org/torproject/onionoo/docs/DetailsStatus.java
@@ -8,7 +8,6 @@ import java.util.SortedSet;
 import java.util.TreeSet;
 
 import org.apache.commons.lang3.StringEscapeUtils;
-import org.apache.commons.lang3.StringUtils;
 
 public class DetailsStatus extends Document {
 
@@ -21,12 +20,10 @@ public class DetailsStatus extends Document {
    * we'll have to do is to change back the '\\' that Gson writes for the
    * '\'. */
   private static String escapeJSON(String s) {
-    return StringUtils.replaceEach(StringEscapeUtils.escapeEcmaScript(s),
-        new String[] { "\\'" }, new String[] { "'" });
+    return StringEscapeUtils.escapeJava(s);
   }
   private static String unescapeJSON(String s) {
-    return StringEscapeUtils.unescapeEcmaScript(StringUtils.replaceEach(s,
-        new String[] { "'" }, new String[] { "\\'" }));
+    return StringEscapeUtils.unescapeJava(s);
   }
 
   /* From most recently published server descriptor: */



More information about the tor-commits mailing list