From 46e6aa5963731d3680c6f0d057c7eb97978ed984 Mon Sep 17 00:00:00 2001 From: Johnny Lim Date: Fri, 22 Jun 2018 01:58:58 +0900 Subject: [PATCH] Fix query string encoding in TraceableHttpServletRequest Closes gh-13545 --- .../web/trace/servlet/TraceableHttpServletRequest.java | 7 ++----- .../trace/servlet/TraceableHttpServletRequestTests.java | 6 +++--- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/web/trace/servlet/TraceableHttpServletRequest.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/web/trace/servlet/TraceableHttpServletRequest.java index 92b74ef1d3..eb74733ff5 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/web/trace/servlet/TraceableHttpServletRequest.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/web/trace/servlet/TraceableHttpServletRequest.java @@ -60,17 +60,14 @@ final class TraceableHttpServletRequest implements TraceableRequest { return new URI(urlBuffer.toString()); } catch (URISyntaxException ex) { - String encoded = UriUtils.encode(queryString, StandardCharsets.UTF_8); + String encoded = UriUtils.encodeQuery(queryString, StandardCharsets.UTF_8); StringBuffer urlBuffer = appendQueryString(encoded); return URI.create(urlBuffer.toString()); } } private StringBuffer appendQueryString(String queryString) { - StringBuffer urlBuffer = this.request.getRequestURL(); - urlBuffer.append("?"); - urlBuffer.append(queryString); - return urlBuffer; + return this.request.getRequestURL().append("?").append(queryString); } @Override diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/web/trace/servlet/TraceableHttpServletRequestTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/web/trace/servlet/TraceableHttpServletRequestTests.java index fe14be88f9..00740084c4 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/web/trace/servlet/TraceableHttpServletRequestTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/web/trace/servlet/TraceableHttpServletRequestTests.java @@ -50,13 +50,13 @@ public class TraceableHttpServletRequestTests { @Test public void getUriWithSpecialCharactersInQueryStringShouldEncode() { this.request.setQueryString("a=${b}"); - validate("http://localhost/script?a%3D%24%7Bb%7D"); + validate("http://localhost/script?a=$%7Bb%7D"); } @Test public void getUriWithSpecialCharactersEncodedShouldNotDoubleEncode() { - this.request.setQueryString("a%3D%24%7Bb%7D"); - validate("http://localhost/script?a%3D%24%7Bb%7D"); + this.request.setQueryString("a=$%7Bb%7D"); + validate("http://localhost/script?a=$%7Bb%7D"); } private void validate(String expectedUri) {