This is an automated email from the ASF dual-hosted git repository. xxyu pushed a commit to branch kylin5 in repository https://gitbox.apache.org/repos/asf/kylin.git
commit cf5fc3b9007d0c8fe0a5d106dd778535564c0363 Author: Zhiting Guo <35057824+fre...@users.noreply.github.com> AuthorDate: Tue Jun 6 14:13:06 2023 +0800 KYLIN-5706 [FOLLOW UP] fix bug --------- Co-authored-by: Zhiting Guo <zhiting....@kyligence.io> --- .../src/main/java/org/apache/kylin/common/util/StringHelper.java | 5 ++++- .../test/java/org/apache/kylin/common/util/StringHelperTest.java | 6 +++++- .../main/java/org/apache/kylin/tool/setup/KapGetClusterInfo.java | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/core-common/src/main/java/org/apache/kylin/common/util/StringHelper.java b/src/core-common/src/main/java/org/apache/kylin/common/util/StringHelper.java index f4cf35775e..7c31565573 100644 --- a/src/core-common/src/main/java/org/apache/kylin/common/util/StringHelper.java +++ b/src/core-common/src/main/java/org/apache/kylin/common/util/StringHelper.java @@ -248,7 +248,10 @@ public class StringHelper { throw new IllegalArgumentException("Unexpected args found: " + Arrays.toString(args)); } // a'b'c -> a b c -> 'a'\''b'\''c' - // ''a'b'c'' -> _ _ a b c _ _ -> \\'\\''a'\\''b'\\''c'\\'\\' + // ''a'b'c'' -> 'a'b'c' -> _ a b c _ -> \\''a'\\''b'\\''c'\\' + if (value.startsWith("'") && value.endsWith("'") && value.length() >= 2) { + value = value.substring(1, value.length() - 1); + } String[] splitValues = value.split("'", -1); value = Arrays.stream(splitValues).map(v -> v.isEmpty() ? v : "'" + v + "'") .collect(Collectors.joining("\\'")); diff --git a/src/core-common/src/test/java/org/apache/kylin/common/util/StringHelperTest.java b/src/core-common/src/test/java/org/apache/kylin/common/util/StringHelperTest.java index 5f2d7befeb..517e5e08af 100644 --- a/src/core-common/src/test/java/org/apache/kylin/common/util/StringHelperTest.java +++ b/src/core-common/src/test/java/org/apache/kylin/common/util/StringHelperTest.java @@ -147,6 +147,10 @@ class StringHelperTest { void testEscapeArguments() { Assertions.assertEquals("", StringHelper.escapeShellArguments("")); Assertions.assertEquals("-u 'root'", StringHelper.escapeShellArguments("-u root ")); + Assertions.assertEquals("-u 'root'", StringHelper.escapeShellArguments("-u 'root' ")); + Assertions.assertEquals("-u \\''root'\\'", StringHelper.escapeShellArguments("-u ''root'' ")); + Assertions.assertEquals("-u \\'", StringHelper.escapeShellArguments("-u '")); + Assertions.assertEquals("-u ", StringHelper.escapeShellArguments("-u ''")); Assertions.assertEquals("-u 'root'", StringHelper.escapeShellArguments("-u root")); Assertions.assertEquals("-UserName 'root'", StringHelper.escapeShellArguments("-UserName root")); Assertions.assertEquals("-user='root'", StringHelper.escapeShellArguments("-user=root")); @@ -156,7 +160,7 @@ class StringHelperTest { Assertions.assertEquals("-UserName 'root'\\''$(ls)'", StringHelper.escapeShellArguments("-UserName root'$(ls)")); Assertions.assertEquals("-user='roo'\\''$(ls)t'", StringHelper.escapeShellArguments("-user=roo'$(ls)t")); - Assertions.assertEquals("-user=\\''roo'\\''$(ls)'\\''t'\\'", + Assertions.assertEquals("-user='roo'\\''$(ls)'\\''t'", StringHelper.escapeShellArguments("-user='roo'$(ls)'t'")); Assertions.assertThrows(IllegalArgumentException.class, () -> StringHelper.escapeShellArguments("u root")); diff --git a/src/tool/src/main/java/org/apache/kylin/tool/setup/KapGetClusterInfo.java b/src/tool/src/main/java/org/apache/kylin/tool/setup/KapGetClusterInfo.java index fa8a2df26a..74d518c843 100644 --- a/src/tool/src/main/java/org/apache/kylin/tool/setup/KapGetClusterInfo.java +++ b/src/tool/src/main/java/org/apache/kylin/tool/setup/KapGetClusterInfo.java @@ -105,7 +105,7 @@ public class KapGetClusterInfo { public void getYarnMetrics() throws IOException, ShellException, YarnException { extractYarnMasterHost(); String url = yarnMasterUrlBase + YARN_METRICS_SUFFIX; - if (StringHelper.validateUrl(url)) { + if (!StringHelper.validateUrl(url)) { throw new IllegalArgumentException("Url contains disallowed chars, url: " + url); } String command = "curl -s -k --negotiate -u : " + url;