From b44fa2934fbdcbe5b0c1e2abfc03d08f8771990c 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 (cherry picked from commit 3e2d5da) --- .../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 9459b7d2d..4e62c21ac 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 @@ -80,12 +80,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) { @@ -234,6 +239,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));