From 963593ea27831ae772f39d8f64b3d2d2a3ac5b8f Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Thu, 19 Apr 2018 06:01:37 -0400 Subject: [PATCH] GUACAMOLE-38: Handle encoded query parameters. --- .../auth/quickconnect/utility/QCParser.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java b/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java index 7d5d7d422..650d56193 100644 --- a/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java +++ b/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java @@ -19,16 +19,21 @@ package org.apache.guacamole.auth.quickconnect.utility; +import java.io.UnsupportedEncodingException; import java.lang.StringBuilder; import java.net.URI; import java.net.URISyntaxException; +import java.net.URLDecoder; import java.util.Arrays; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.guacamole.GuacamoleClientException; +import org.apache.guacamole.GuacamoleServerException; import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.protocol.GuacamoleConfiguration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * A utility class to parse out a URI into the settings necessary @@ -36,6 +41,11 @@ import org.apache.guacamole.protocol.GuacamoleConfiguration; */ public class QCParser { + /** + * Logger for this class. + */ + private final static Logger logger = LoggerFactory.getLogger(QCParser.class); + /** * The default protocol to parse to if one is provided in * the incoming URI.. @@ -131,7 +141,14 @@ public class QCParser { if (paramList != null) { for (String parameter : paramList) { String[] paramArray = parameter.split("=", 2); - qcConfig.setParameter(paramArray[0],paramArray[1]); + try { + qcConfig.setParameter(URLDecoder.decode(paramArray[0], "UTF-8"), + URLDecoder.decode(paramArray[1], "UTF-8")); + } + catch (UnsupportedEncodingException e) { + logger.error("Unexpected lack of UTF-8 encoding support."); + throw new GuacamoleServerException("Unexpected lack of UTF-8 encoding support.", e); + } } }