From 86740f62902626eef3363122f452c659d54d7391 Mon Sep 17 00:00:00 2001 From: Zeeshan Asghar Date: Fri, 22 Jan 2016 14:53:34 +0500 Subject: [PATCH] squid:S1943 Classes and methods that rely on the default system encoding should not be used --- .../main/java/org/apache/kylin/common/util/SSHClient.java | 5 +++-- .../main/java/org/apache/kylin/cube/model/CubeDesc.java | 6 ++++-- .../main/java/org/apache/kylin/cube/model/v1/CubeDesc.java | 5 +++-- .../java/org/apache/kylin/invertedindex/model/IIDesc.java | 5 +++-- .../java/org/apache/kylin/jdbc/KylinConnectionImpl.java | 3 ++- .../main/java/org/apache/kylin/jdbc/util/SQLTypeMap.java | 3 ++- .../apache/kylin/job/tools/GridTableHBaseBenchmark.java | 5 +++-- .../kylin/metadata/measure/fixedlen/FixedHLLCodec.java | 3 ++- .../java/org/apache/kylin/rest/security/LdapProvider.java | 3 ++- .../kylin/rest/security/PasswordPlaceholderConfigurer.java | 5 +++-- .../java/org/apache/kylin/rest/service/AdminService.java | 7 ++++++- 11 files changed, 33 insertions(+), 17 deletions(-) diff --git a/common/src/main/java/org/apache/kylin/common/util/SSHClient.java b/common/src/main/java/org/apache/kylin/common/util/SSHClient.java index 03cef9be3..7d7b19816 100644 --- a/common/src/main/java/org/apache/kylin/common/util/SSHClient.java +++ b/common/src/main/java/org/apache/kylin/common/util/SSHClient.java @@ -28,6 +28,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.nio.charset.Charset; import org.slf4j.LoggerFactory; @@ -89,7 +90,7 @@ public void scpFileToRemote(String localFile, String remoteTargetDirectory) thro // The access time should be sent here, // but it is not accessible with JavaAPI ;-< command += (" " + (_lfile.lastModified() / 1000) + " 0\n"); - out.write(command.getBytes()); + out.write(command.getBytes(Charset.forName("UTF-8"))); out.flush(); if (checkAck(in) != 0) { throw new Exception("Error in checkAck()"); @@ -292,7 +293,7 @@ public SSHClientOutput execCommand(String command, int timeoutSeconds, Logger lo if (i < 0) break; - String line = new String(tmp, 0, i); + String line = new String(tmp, 0, i, Charset.forName("UTF-8")); text.append(line); if (logAppender != null) { logAppender.log(line); diff --git a/cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java b/cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java index f236c4e09..7ceb8c376 100644 --- a/cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java +++ b/cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java @@ -33,6 +33,8 @@ import java.util.Map.Entry; import java.util.Set; +import java.nio.charset.Charset; + import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.net.util.Base64; @@ -409,8 +411,8 @@ public String calculateSignature() { StringBuilder sigString = new StringBuilder(); sigString.append(this.name).append("|").append(this.getFactTable()).append("|").append(JsonUtil.writeValueAsString(this.model.getPartitionDesc())).append("|").append(JsonUtil.writeValueAsString(this.dimensions)).append("|").append(JsonUtil.writeValueAsString(this.measures)).append("|").append(JsonUtil.writeValueAsString(this.rowkey)).append("|").append(JsonUtil.writeValueAsString(this.hbaseMapping)); - byte[] signature = md.digest(sigString.toString().getBytes()); - return new String(Base64.encodeBase64(signature)); + byte[] signature = md.digest(sigString.toString().getBytes(Charset.forName("UTF-8"))); + return new String(Base64.encodeBase64(signature), Charset.forName("UTF-8")); } catch (NoSuchAlgorithmException | JsonProcessingException e) { throw new RuntimeException("Failed to calculate signature"); } diff --git a/cube/src/main/java/org/apache/kylin/cube/model/v1/CubeDesc.java b/cube/src/main/java/org/apache/kylin/cube/model/v1/CubeDesc.java index 156489903..f88fb411d 100644 --- a/cube/src/main/java/org/apache/kylin/cube/model/v1/CubeDesc.java +++ b/cube/src/main/java/org/apache/kylin/cube/model/v1/CubeDesc.java @@ -18,6 +18,7 @@ package org.apache.kylin.cube.model.v1; +import java.nio.charset.Charset; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; @@ -454,8 +455,8 @@ public String calculateSignature() { StringBuilder sigString = new StringBuilder(); sigString.append(this.name).append("|").append(this.factTable).append("|").append(JsonUtil.writeValueAsString(this.cubePartitionDesc)).append("|").append(JsonUtil.writeValueAsString(this.dimensions)).append("|").append(JsonUtil.writeValueAsString(this.measures)).append("|").append(JsonUtil.writeValueAsString(this.rowkey)).append("|").append(JsonUtil.writeValueAsString(this.hbaseMapping)); - byte[] signature = md.digest(sigString.toString().getBytes()); - return new String(Base64.encodeBase64(signature)); + byte[] signature = md.digest(sigString.toString().getBytes(Charset.forName("UTF-8"))); + return new String(Base64.encodeBase64(signature), Charset.forName("UTF-8")); } catch (NoSuchAlgorithmException e) { throw new RuntimeException("Failed to calculate signature"); } catch (JsonProcessingException e) { diff --git a/invertedindex/src/main/java/org/apache/kylin/invertedindex/model/IIDesc.java b/invertedindex/src/main/java/org/apache/kylin/invertedindex/model/IIDesc.java index 6e1224a76..88dbba032 100644 --- a/invertedindex/src/main/java/org/apache/kylin/invertedindex/model/IIDesc.java +++ b/invertedindex/src/main/java/org/apache/kylin/invertedindex/model/IIDesc.java @@ -18,6 +18,7 @@ package org.apache.kylin.invertedindex.model; +import java.nio.charset.Charset; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; @@ -356,8 +357,8 @@ public String calculateSignature() { StringBuilder sigString = new StringBuilder(); sigString.append(this.name).append("|").append(this.getFactTableName()).append("|").append(timestampDimension).append("|").append(JsonUtil.writeValueAsString(this.bitmapDimensions)).append("|").append(JsonUtil.writeValueAsString(valueDimensions)).append("|").append(JsonUtil.writeValueAsString(this.metricNames)).append("|").append(sharding).append("|").append(sliceSize); - byte[] signature = md.digest(sigString.toString().getBytes()); - return new String(Base64.encodeBase64(signature)); + byte[] signature = md.digest(sigString.toString().getBytes(Charset.forName("UTF-8"))); + return new String(Base64.encodeBase64(signature), Charset.forName("UTF-8")); } catch (NoSuchAlgorithmException e) { throw new RuntimeException("Failed to calculate signature"); } catch (JsonProcessingException e) { diff --git a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinConnectionImpl.java b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinConnectionImpl.java index 887bd6617..678b4784d 100644 --- a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinConnectionImpl.java +++ b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinConnectionImpl.java @@ -18,6 +18,7 @@ package org.apache.kylin.jdbc; +import java.nio.charset.Charset; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -99,7 +100,7 @@ public String getBasicAuthHeader() { String username = this.info.getProperty("user"); String password = this.info.getProperty("password"); - return DatatypeConverter.printBase64Binary((username + ":" + password).getBytes()); + return DatatypeConverter.printBase64Binary((username + ":" + password).getBytes(Charset.forName("UTF-8"))); } public String getConnectUrl() { diff --git a/jdbc/src/main/java/org/apache/kylin/jdbc/util/SQLTypeMap.java b/jdbc/src/main/java/org/apache/kylin/jdbc/util/SQLTypeMap.java index ec7df0ba2..ea0619d81 100644 --- a/jdbc/src/main/java/org/apache/kylin/jdbc/util/SQLTypeMap.java +++ b/jdbc/src/main/java/org/apache/kylin/jdbc/util/SQLTypeMap.java @@ -19,6 +19,7 @@ package org.apache.kylin.jdbc.util; import java.math.BigDecimal; +import java.nio.charset.Charset; import java.sql.Date; import java.sql.Time; import java.sql.Timestamp; @@ -169,7 +170,7 @@ public static Object wrapObject(String value, int sqlType) { case Types.BINARY: case Types.VARBINARY: case Types.LONGVARBINARY: - return value.getBytes(); + return value.getBytes(Charset.forName("UTF-8")); case Types.DATE: return Date.valueOf(value); case Types.TIME: diff --git a/job/src/main/java/org/apache/kylin/job/tools/GridTableHBaseBenchmark.java b/job/src/main/java/org/apache/kylin/job/tools/GridTableHBaseBenchmark.java index a40f26510..94ef4d840 100644 --- a/job/src/main/java/org/apache/kylin/job/tools/GridTableHBaseBenchmark.java +++ b/job/src/main/java/org/apache/kylin/job/tools/GridTableHBaseBenchmark.java @@ -19,6 +19,7 @@ package org.apache.kylin.job.tools; import java.io.IOException; +import java.nio.charset.Charset; import java.util.List; import java.util.Random; @@ -45,8 +46,8 @@ public class GridTableHBaseBenchmark { private static final String TEST_TABLE = "GridTableTest"; - private static final byte[] CF = "F".getBytes(); - private static final byte[] QN = "C".getBytes(); + private static final byte[] CF = "F".getBytes(Charset.forName("UTF-8")); + private static final byte[] QN = "C".getBytes(Charset.forName("UTF-8")); private static final int N_ROWS = 10000; private static final int CELL_SIZE = 128 * 1024; // 128 KB private static final double DFT_HIT_RATIO = 0.3; diff --git a/metadata/src/main/java/org/apache/kylin/metadata/measure/fixedlen/FixedHLLCodec.java b/metadata/src/main/java/org/apache/kylin/metadata/measure/fixedlen/FixedHLLCodec.java index f74b045f7..0c8f7e58a 100644 --- a/metadata/src/main/java/org/apache/kylin/metadata/measure/fixedlen/FixedHLLCodec.java +++ b/metadata/src/main/java/org/apache/kylin/metadata/measure/fixedlen/FixedHLLCodec.java @@ -18,6 +18,7 @@ package org.apache.kylin.metadata.measure.fixedlen; import java.nio.ByteBuffer; +import java.nio.charset.Charset; import org.apache.kylin.common.hll.HyperLogLogPlusCounter; import org.apache.kylin.metadata.model.DataType; @@ -53,7 +54,7 @@ public HyperLogLogPlusCounter valueOf(String value) { if (value == null) current.add("__nUlL__"); else - current.add(value.getBytes()); + current.add(value.getBytes(Charset.forName("UTF-8"))); return current; } diff --git a/server/src/main/java/org/apache/kylin/rest/security/LdapProvider.java b/server/src/main/java/org/apache/kylin/rest/security/LdapProvider.java index b34a2bd72..7cda71545 100644 --- a/server/src/main/java/org/apache/kylin/rest/security/LdapProvider.java +++ b/server/src/main/java/org/apache/kylin/rest/security/LdapProvider.java @@ -18,6 +18,7 @@ package org.apache.kylin.rest.security; +import java.nio.charset.Charset; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; @@ -74,7 +75,7 @@ public Authentication authenticate(Authentication authentication) throws Authent Authentication authed = null; Cache userCache = cacheManager.getCache("UserCache"); md.reset(); - byte[] hashKey = md.digest((authentication.getName() + authentication.getCredentials()).getBytes()); + byte[] hashKey = md.digest((authentication.getName() + authentication.getCredentials()).getBytes(Charset.forName("UTF-8"))); String userKey = Arrays.toString(hashKey); Element authedUser = userCache.get(userKey); diff --git a/server/src/main/java/org/apache/kylin/rest/security/PasswordPlaceholderConfigurer.java b/server/src/main/java/org/apache/kylin/rest/security/PasswordPlaceholderConfigurer.java index d034eca25..a7032b601 100644 --- a/server/src/main/java/org/apache/kylin/rest/security/PasswordPlaceholderConfigurer.java +++ b/server/src/main/java/org/apache/kylin/rest/security/PasswordPlaceholderConfigurer.java @@ -18,6 +18,7 @@ package org.apache.kylin.rest.security; +import java.nio.charset.Charset; import java.util.Properties; import javax.crypto.Cipher; @@ -50,7 +51,7 @@ public static String encrypt(String strToEncrypt) { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); final SecretKeySpec secretKey = new SecretKeySpec(key, "AES"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); - final String encryptedString = Base64.encodeBase64String(cipher.doFinal(strToEncrypt.getBytes())); + final String encryptedString = Base64.encodeBase64String(cipher.doFinal(strToEncrypt.getBytes(Charset.forName("UTF-8")))); return encryptedString; } catch (Exception e) { throw new RuntimeException(e.getMessage(), e); @@ -62,7 +63,7 @@ public static String decrypt(String strToDecrypt) { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING"); final SecretKeySpec secretKey = new SecretKeySpec(key, "AES"); cipher.init(Cipher.DECRYPT_MODE, secretKey); - final String decryptedString = new String(cipher.doFinal(Base64.decodeBase64(strToDecrypt))); + final String decryptedString = new String(cipher.doFinal(Base64.decodeBase64(strToDecrypt)), Charset.forName("UTF-8")); return decryptedString; } catch (Exception e) { throw new RuntimeException(e.getMessage(), e); diff --git a/server/src/main/java/org/apache/kylin/rest/service/AdminService.java b/server/src/main/java/org/apache/kylin/rest/service/AdminService.java index e5ab1f03d..343d4968e 100644 --- a/server/src/main/java/org/apache/kylin/rest/service/AdminService.java +++ b/server/src/main/java/org/apache/kylin/rest/service/AdminService.java @@ -20,6 +20,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.util.Map; import java.util.Properties; @@ -74,7 +75,11 @@ public String getEnv() { // do save tempConfig.save(baos); - content = baos.toString(); + try { + content = baos.toString("UTF-8"); + } catch (UnsupportedEncodingException e) { + content = baos.toString(); + } return content; } catch (ConfigurationException e) { throw new InternalErrorException("Failed to get Kylin env Config", e);