Decode name and value of parameters.

This commit is contained in:
Michael Jumper
2013-08-07 13:42:43 -07:00
parent 7d3c78bb58
commit e8ec136c29

View File

@@ -1,6 +1,9 @@
package net.sourceforge.guacamole.net.auth;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.nio.charset.UnsupportedCharsetException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
@@ -153,9 +156,11 @@ public class Credentials implements Serializable {
// Get name/value pairs
String[] nv_pairs = query_string.split("&");
queryParameters = new HashMap<String, String>();
try {
// Add each pair to hash
queryParameters = new HashMap<String, String>();
for (String nv_pair : nv_pairs) {
String name;
@@ -175,11 +180,21 @@ public class Credentials implements Serializable {
value = nv_pair.substring(eq+1);
}
// Save pair to hash
queryParameters.put(name, value);
// Decode and save pair to hash
queryParameters.put(
URLDecoder.decode(name, "UTF-8"),
URLDecoder.decode(value, "UTF-8")
);
}
}
// If UTF-8 unsupported, throw fatal error
catch (UnsupportedEncodingException e) {
throw new UnsupportedOperationException("Unexpected lack of support for UTF-8", e);
}
} // end if parameters cached
// Return parsed parameter, if any