Bladeren bron

Encode 0x01 chars in JSON output.

Change-Id: I598300f39dc13b80ca7f3edde3be71a78aa09e52
Fixes-Issue: CLIENT-373
Reviewed-on: http://gerrit.dmdirc.com/2486
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Greg Holmes <greg@dmdirc.com>
tags/0.7rc1
Chris Smith 12 jaren geleden
bovenliggende
commit
2199718372
1 gewijzigde bestanden met toevoegingen van 18 en 6 verwijderingen
  1. 18
    6
      src/com/dmdirc/addons/ui_web/DynamicRequestHandler.java

+ 18
- 6
src/com/dmdirc/addons/ui_web/DynamicRequestHandler.java Bestand weergeven

@@ -195,7 +195,7 @@ public class DynamicRequestHandler extends AbstractHandler {
195 195
 
196 196
             client.setContinuation(null);
197 197
 
198
-            final String json = JSON.toString(myEvents.toArray());
198
+            final String json = toJSON(myEvents.toArray());
199 199
             response.getWriter().write(json);
200 200
         }
201 201
     }
@@ -227,7 +227,7 @@ public class DynamicRequestHandler extends AbstractHandler {
227 227
                         request.getParameter("selstart"),
228 228
                         request.getParameter("selend")).handleKeyPressed(
229 229
                         request.getParameter("input"),
230
-                        Integer.parseInt(request.getParameter("key")), 0, 
230
+                        Integer.parseInt(request.getParameter("key")), 0,
231 231
                         Boolean.parseBoolean(request.getParameter("shift")),
232 232
                         Boolean.parseBoolean(request.getParameter("ctrl")));
233 233
             } catch (NumberFormatException ex) {
@@ -301,7 +301,7 @@ public class DynamicRequestHandler extends AbstractHandler {
301 301
                     cci.getClient().getNickname()));
302 302
         }
303 303
 
304
-        response.getWriter().write(JSON.toString(nickEvents.toArray()));
304
+        response.getWriter().write(toJSON(nickEvents.toArray()));
305 305
     }
306 306
 
307 307
     private void doProfiles(final HttpServletResponse response) throws
@@ -317,7 +317,7 @@ public class DynamicRequestHandler extends AbstractHandler {
317 317
             profileEvents.add(new Event("addprofile", identity.getName()));
318 318
         }
319 319
 
320
-        response.getWriter().write(JSON.toString(profileEvents.toArray()));
320
+        response.getWriter().write(toJSON(profileEvents.toArray()));
321 321
     }
322 322
 
323 323
     private void doWindowRefresh(final HttpServletRequest request,
@@ -336,14 +336,14 @@ public class DynamicRequestHandler extends AbstractHandler {
336 336
             windowEvents.add(new Event("lineadded", new Message(line, window)));
337 337
         }
338 338
 
339
-        response.getWriter().write(JSON.toString(windowEvents.toArray()));
339
+        response.getWriter().write(toJSON(windowEvents.toArray()));
340 340
     }
341 341
 
342 342
     private void doClients(final HttpServletResponse response)
343 343
             throws IOException {
344 344
         response.setStatus(HttpServletResponse.SC_OK);
345 345
         response.setContentType("application/json");
346
-        response.getWriter().write(JSON.toString(clients.values().toArray()));
346
+        response.getWriter().write(toJSON(clients.values().toArray()));
347 347
     }
348 348
 
349 349
     private void doJoinChannel(final HttpServletRequest request)
@@ -386,4 +386,16 @@ public class DynamicRequestHandler extends AbstractHandler {
386 386
         }
387 387
     }
388 388
 
389
+    /**
390
+     * Utility method to convert an object into a JSON string. Performs the
391
+     * conversion using {@link JSON#toString(java.lang.Object)}, and then
392
+     * post-processes the output to encode certain control characters.
393
+     *
394
+     * @param object The object to be JSON-ified.
395
+     * @return A JSON representation of the specified object.
396
+     */
397
+    private static String toJSON(final Object object) {
398
+        return JSON.toString(object).replace("\001", "\\u0001");
399
+    }
400
+
389 401
 }

Laden…
Annuleren
Opslaan