From 2e0e665c63534b103fe13f2d0450bc938ef6af47 Mon Sep 17 00:00:00 2001 From: Paddy Byers Date: Sun, 8 Jan 2017 19:53:48 +0000 Subject: [PATCH] Add explicit charset to occurrences of getBytes() --- lib/src/main/java/io/ably/lib/http/Http.java | 3 ++- lib/src/main/java/io/ably/lib/rest/Auth.java | 5 +++-- lib/src/main/java/io/ably/lib/types/ProtocolSerializer.java | 3 ++- lib/src/main/java/io/ably/lib/util/Base64Coder.java | 4 +++- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/src/main/java/io/ably/lib/http/Http.java b/lib/src/main/java/io/ably/lib/http/Http.java index 1c58dfa40..8dd181ff9 100644 --- a/lib/src/main/java/io/ably/lib/http/Http.java +++ b/lib/src/main/java/io/ably/lib/http/Http.java @@ -10,6 +10,7 @@ import java.net.MalformedURLException; import java.net.Proxy; import java.net.URL; +import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.HashMap; import java.util.List; @@ -121,7 +122,7 @@ public static class JSONRequestBody implements RequestBody { public JSONRequestBody(Object ob) { this(Serialisation.gson.toJson(ob)); } @Override - public byte[] getEncoded() { return (bytes != null) ? bytes : (bytes = jsonText.getBytes()); } + public byte[] getEncoded() { return (bytes != null) ? bytes : (bytes = jsonText.getBytes(StandardCharsets.UTF_8)); } @Override public String getContentType() { return JSON; } diff --git a/lib/src/main/java/io/ably/lib/rest/Auth.java b/lib/src/main/java/io/ably/lib/rest/Auth.java index 3fdba3bf3..48689bc15 100644 --- a/lib/src/main/java/io/ably/lib/rest/Auth.java +++ b/lib/src/main/java/io/ably/lib/rest/Auth.java @@ -1,5 +1,6 @@ package io.ably.lib.rest; +import java.nio.charset.StandardCharsets; import java.security.GeneralSecurityException; import java.util.ArrayList; import java.util.Arrays; @@ -740,8 +741,8 @@ public void onAuthError(ErrorInfo err) { private static final String hmac(String text, String key) { try { Mac mac = Mac.getInstance("HmacSHA256"); - mac.init(new SecretKeySpec(key.getBytes(), "HmacSHA256")); - return new String(Base64Coder.encode(mac.doFinal(text.getBytes()))); + mac.init(new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "HmacSHA256")); + return new String(Base64Coder.encode(mac.doFinal(text.getBytes(StandardCharsets.UTF_8)))); } catch (GeneralSecurityException e) { Log.e("Auth.hmac", "Unexpected exception", e); return null; } } diff --git a/lib/src/main/java/io/ably/lib/types/ProtocolSerializer.java b/lib/src/main/java/io/ably/lib/types/ProtocolSerializer.java index ed0fb7881..68b6dd695 100644 --- a/lib/src/main/java/io/ably/lib/types/ProtocolSerializer.java +++ b/lib/src/main/java/io/ably/lib/types/ProtocolSerializer.java @@ -2,6 +2,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; import org.msgpack.core.MessagePacker; import org.msgpack.core.MessageUnpacker; @@ -51,6 +52,6 @@ public static ProtocolMessage fromJSON(String packed) throws AblyException { ****************************************/ public static byte[] writeJSON(ProtocolMessage message) throws AblyException { - return Serialisation.gson.toJson(message).getBytes(); + return Serialisation.gson.toJson(message).getBytes(StandardCharsets.UTF_8); } } diff --git a/lib/src/main/java/io/ably/lib/util/Base64Coder.java b/lib/src/main/java/io/ably/lib/util/Base64Coder.java index 9d96d7ec5..cc6c194a8 100644 --- a/lib/src/main/java/io/ably/lib/util/Base64Coder.java +++ b/lib/src/main/java/io/ably/lib/util/Base64Coder.java @@ -1,5 +1,7 @@ package io.ably.lib.util; +import java.nio.charset.StandardCharsets; + //Copyright 2003-2010 Christian d'Heureuse, Inventec Informatik AG, Zurich, Switzerland //www.source-code.biz, www.inventec.ch/chdh // @@ -52,7 +54,7 @@ public class Base64Coder { * @return A String containing the Base64 encoded data. */ public static String encodeString (String s) { -return new String(encode(s.getBytes())); } +return new String(encode(s.getBytes(StandardCharsets.UTF_8))); } /** * Encodes a byte array into Base 64 format and breaks the output into lines of 76 characters.