From e9baeb9c7639a53f6ab6b9fc5ff18423b17de9b8 Mon Sep 17 00:00:00 2001 From: Andrew Gaul Date: Sat, 9 Jan 2016 14:37:09 -0800 Subject: [PATCH] Always re-encode parameters Assume UTF-8 encoding if not provided. Reference #24. --- src/main/java/org/gaul/s3proxy/S3ProxyHandler.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java b/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java index 9a7c7fc..faf62e4 100644 --- a/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java +++ b/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java @@ -59,6 +59,7 @@ import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamWriter; import com.google.common.base.Joiner; +import com.google.common.base.Objects; import com.google.common.base.Optional; import com.google.common.base.Strings; import com.google.common.base.Throwables; @@ -2356,16 +2357,14 @@ final class S3ProxyHandler extends AbstractHandler { List parameters = Collections.list(request.getParameterNames()); Collections.sort(parameters); List queryParameters = new ArrayList<>(); - String charsetName = request.getQueryEncoding(); + String charsetName = Objects.firstNonNull(request.getQueryEncoding(), + "UTF-8"); for (String key : parameters) { + String value = request.getParameter(key); // The parameters are decoded by default, so we need to re-encode // them - String value = request.getParameter(key); - if (charsetName != null) { - key = URLEncoder.encode(key, charsetName); - value = URLEncoder.encode(value, charsetName); - } - queryParameters.add(key + "=" + value); + queryParameters.add(URLEncoder.encode(key, charsetName) + + "=" + URLEncoder.encode(value, charsetName)); } return Joiner.on("&").join(queryParameters); }