Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Wolf2021-02-28 15:08:06 +0000
committerThomas Wolf2021-03-09 13:10:08 +0000
commitaa8b577a1dc176925cc42f9dc330ded55bf7d2f2 (patch)
tree9eb7a997ed2b1642e64529dd0b36131a8dd21e3b
parentd3fba63080073e57e76c8699c357bbce5dbea526 (diff)
downloadeclipse.platform.ua-aa8b577a1dc176925cc42f9dc330ded55bf7d2f2.tar.gz
eclipse.platform.ua-aa8b577a1dc176925cc42f9dc330ded55bf7d2f2.tar.xz
eclipse.platform.ua-aa8b577a1dc176925cc42f9dc330ded55bf7d2f2.zip
Read Json stream as UTF-8I20210309-1800
Do not (implicitly) rely on Charset.defaultCharset(). RFC 8259 specifies UTF-8 unless in a closed system. Older RFC 7159 and RFC 4627 allowed UTF-8, UTF-16, UTF-32, big or little endian, with or without BOM. Change-Id: I33ddfacccc97f81d9eeaf444f734c469028c8214 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
-rw-r--r--org.eclipse.tips.json/src/org/eclipse/tips/json/JsonTipProvider.java6
1 files changed, 5 insertions, 1 deletions
diff --git a/org.eclipse.tips.json/src/org/eclipse/tips/json/JsonTipProvider.java b/org.eclipse.tips.json/src/org/eclipse/tips/json/JsonTipProvider.java
index 95d8fc78b..ec6312cae 100644
--- a/org.eclipse.tips.json/src/org/eclipse/tips/json/JsonTipProvider.java
+++ b/org.eclipse.tips.json/src/org/eclipse/tips/json/JsonTipProvider.java
@@ -18,6 +18,7 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
import java.text.MessageFormat;
import java.text.ParseException;
import java.util.ArrayList;
@@ -105,7 +106,10 @@ public abstract class JsonTipProvider extends TipProvider {
}
private JsonObject loadJsonObject() throws IOException {
- try (InputStream stream = fJsonUrl.openStream(); InputStreamReader reader = new InputStreamReader(stream)) {
+ // RFC 8259: https://tools.ietf.org/html/rfc8259#section-8.1
+ // Json MUST be encoded as UTF-8, unless in a closed system.
+ try (InputStream stream = fJsonUrl.openStream();
+ InputStreamReader reader = new InputStreamReader(stream, StandardCharsets.UTF_8)) {
Object result = JsonParser.parseReader(reader);
if (result instanceof JsonObject) {
return (JsonObject) result;

Back to the top