From 3e2d5da12c3bc426df346554d9d53cf9b6f09c1a Mon Sep 17 00:00:00 2001 From: Lukasz Lenart Date: Tue, 20 Oct 2015 08:16:41 +0200 Subject: [PATCH] WW-4526 Checks if passed in scheme param is valid --- .../apache/struts2/views/util/DefaultUrlHelper.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java index 460c13830..4d20ee293 100644 --- a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java +++ b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java @@ -85,12 +85,17 @@ public class DefaultUrlHelper implements UrlHelper { return buildUrl(action, request, response, params, scheme, includeContext, encodeResult, forceAddSchemeHostAndPort, true); } - public String buildUrl(String action, HttpServletRequest request, HttpServletResponse response, Map params, String scheme, + public String buildUrl(String action, HttpServletRequest request, HttpServletResponse response, Map params, String urlScheme, boolean includeContext, boolean encodeResult, boolean forceAddSchemeHostAndPort, boolean escapeAmp) { StringBuilder link = new StringBuilder(); boolean changedScheme = false; + String scheme = null; + if (isValidScheme(urlScheme)) { + scheme = urlScheme; + } + // only append scheme if it is different to the current scheme *OR* // if we explicity want it to be appended by having forceAddSchemeHostAndPort = true if (forceAddSchemeHostAndPort) { @@ -241,6 +246,10 @@ public class DefaultUrlHelper implements UrlHelper { } } + protected boolean isValidScheme(String scheme) { + return HTTP_PROTOCOL.equals(scheme) || HTTPS_PROTOCOL.equals(scheme); + } + private String buildParameterSubstring(String name, String value) { StringBuilder builder = new StringBuilder(); builder.append(encode(name));