Repository: jclouds Updated Branches: refs/heads/2.1.x 467501fdd -> 9f999617c
[JCLOUDS-1433] $ and \ in tokenValues passed to Strings2.replaceTokens(String, Multimap) could result in IllegalArgumentException. Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/9f999617 Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/9f999617 Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/9f999617 Branch: refs/heads/2.1.x Commit: 9f999617cebd26ebb79c95549314f6ea4f2e1551 Parents: 467501f Author: Jesse Glick <[email protected]> Authored: Tue Jul 10 15:22:20 2018 -0400 Committer: Ignasi Barrera <[email protected]> Committed: Tue Jul 10 15:01:33 2018 -0700 ---------------------------------------------------------------------- core/src/main/java/org/jclouds/util/Strings2.java | 2 +- core/src/test/java/org/jclouds/util/Strings2Test.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/9f999617/core/src/main/java/org/jclouds/util/Strings2.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/jclouds/util/Strings2.java b/core/src/main/java/org/jclouds/util/Strings2.java index 27fd545..cc09b6c 100644 --- a/core/src/main/java/org/jclouds/util/Strings2.java +++ b/core/src/main/java/org/jclouds/util/Strings2.java @@ -182,7 +182,7 @@ public class Strings2 { public static String replaceTokens(String input, Multimap<String, ?> tokenValues) { for (Entry<String, ?> tokenValue : tokenValues.entries()) { Pattern pattern = TOKEN_TO_PATTERN.getUnchecked(tokenValue.getKey()); - input = pattern.matcher(input).replaceAll(tokenValue.getValue().toString()); + input = pattern.matcher(input).replaceAll(tokenValue.getValue().toString().replace("\\", "\\\\").replace("$", "\\$")); } return input; } http://git-wip-us.apache.org/repos/asf/jclouds/blob/9f999617/core/src/test/java/org/jclouds/util/Strings2Test.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/jclouds/util/Strings2Test.java b/core/src/test/java/org/jclouds/util/Strings2Test.java index 2acdd35..cf838bc 100644 --- a/core/src/test/java/org/jclouds/util/Strings2Test.java +++ b/core/src/test/java/org/jclouds/util/Strings2Test.java @@ -23,12 +23,15 @@ import static org.testng.Assert.assertEquals; import org.testng.annotations.Test; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMultimap; @Test(groups = "unit") public class Strings2Test { public void testReplaceTokens() { assertEquals(Strings2.replaceTokens("hello {where}", ImmutableMap.of("where", "world")), "hello world"); + assertEquals(Strings2.replaceTokens("hello {where}", ImmutableMap.of("where", "$1,000,000 \\o/!")), "hello $1,000,000 \\o/!"); + assertEquals(Strings2.replaceTokens("hello {where}", ImmutableMultimap.of("where", "$1,000,000 \\o/!")), "hello $1,000,000 \\o/!"); } public void testUrlEncodeDecodeShouldGiveTheSameString() {
