diff --git a/java/change-notes/2021-07-01-spring-webutil.md b/java/change-notes/2021-07-01-spring-webutil.md new file mode 100644 index 000000000000..279fd801e014 --- /dev/null +++ b/java/change-notes/2021-07-01-spring-webutil.md @@ -0,0 +1,4 @@ +lgtm,codescanning +* Additional flow steps in the `org.springframework.web.util` package of the Spring framework have + been modelled. This may result in additional results for security queries on projects using this + framework. diff --git a/java/ql/src/semmle/code/java/dataflow/ExternalFlow.qll b/java/ql/src/semmle/code/java/dataflow/ExternalFlow.qll index aae71ce6d9af..748e5a12c5a5 100644 --- a/java/ql/src/semmle/code/java/dataflow/ExternalFlow.qll +++ b/java/ql/src/semmle/code/java/dataflow/ExternalFlow.qll @@ -95,6 +95,7 @@ private module Frameworks { private import semmle.code.java.frameworks.spring.SpringWebClient private import semmle.code.java.frameworks.spring.SpringBeans private import semmle.code.java.frameworks.spring.SpringWebMultipart + private import semmle.code.java.frameworks.spring.SpringWebUtil private import semmle.code.java.security.ResponseSplitting private import semmle.code.java.security.InformationLeak private import semmle.code.java.security.GroovyInjection diff --git a/java/ql/src/semmle/code/java/frameworks/spring/Spring.qll b/java/ql/src/semmle/code/java/frameworks/spring/Spring.qll index 21794a9d92c2..10bf4e677f81 100644 --- a/java/ql/src/semmle/code/java/frameworks/spring/Spring.qll +++ b/java/ql/src/semmle/code/java/frameworks/spring/Spring.qll @@ -39,6 +39,7 @@ import semmle.code.java.frameworks.spring.SpringUtil import semmle.code.java.frameworks.spring.SpringValidation import semmle.code.java.frameworks.spring.SpringValue import semmle.code.java.frameworks.spring.SpringWebMultipart +import semmle.code.java.frameworks.spring.SpringWebUtil import semmle.code.java.frameworks.spring.SpringXMLElement import semmle.code.java.frameworks.spring.metrics.MetricSpringBean import semmle.code.java.frameworks.spring.metrics.MetricSpringBeanFile diff --git a/java/ql/src/semmle/code/java/frameworks/spring/SpringWebUtil.qll b/java/ql/src/semmle/code/java/frameworks/spring/SpringWebUtil.qll new file mode 100644 index 000000000000..78f6bfb281c1 --- /dev/null +++ b/java/ql/src/semmle/code/java/frameworks/spring/SpringWebUtil.qll @@ -0,0 +1,176 @@ +/** Provides models of taint flow in `org.springframework.web.util` */ + +import java +private import semmle.code.java.dataflow.ExternalFlow + +private class FlowSummaries extends SummaryModelCsv { + override predicate row(string row) { + row = + [ + "org.springframework.web.util;UriBuilder;true;build;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriBuilder;true;build;(Map);;MapValue of Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;fragment;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriBuilder;true;fragment;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;host;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriBuilder;true;host;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;path;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriBuilder;true;path;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;pathSegment;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriBuilder;true;pathSegment;;;ArrayElement of Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;port;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriBuilder;true;port;(java.lang.String);;Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;query;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriBuilder;true;query;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;queryParam;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriBuilder;true;queryParam;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;queryParam;(String,Collection);;Element of Argument[1];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;queryParam;(String,Object[]);;ArrayElement of Argument[1];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;queryParamIfPresent;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriBuilder;true;queryParamIfPresent;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;queryParamIfPresent;;;Element of Argument[1];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;queryParams;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriBuilder;true;queryParams;;;MapKey of Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;queryParams;;;Element of MapValue of Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;replacePath;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriBuilder;true;replacePath;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;replaceQuery;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriBuilder;true;replaceQuery;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;replaceQueryParam;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriBuilder;true;replaceQueryParam;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;replaceQueryParam;(String,Collection);;Element of Argument[1];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;replaceQueryParam;(String,Object[]);;ArrayElement of Argument[1];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;replaceQueryParams;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriBuilder;true;replaceQueryParams;;;MapKey of Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;replaceQueryParams;;;Element of MapValue of Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;scheme;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriBuilder;true;scheme;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilder;true;userInfo;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriBuilder;true;userInfo;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriBuilderFactory;true;builder;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriBuilderFactory;true;uriString;;;Argument[-1..0];ReturnValue;taint", + "org.springframework.web.util;UriComponents$UriTemplateVariables;true;getValue;;;MapValue of Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriTemplateHandler;true;expand;;;Argument[-1..0];ReturnValue;taint", + "org.springframework.web.util;UriTemplateHandler;true;expand;(String,Map);;MapValue of Argument[1];ReturnValue;taint", + "org.springframework.web.util;UriTemplateHandler;true;expand;(String,Object[]);;ArrayElement of Argument[1];ReturnValue;taint", + "org.springframework.web.util;AbstractUriTemplateHandler;true;getBaseUrl;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;AbstractUriTemplateHandler;true;setBaseUrl;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;AbstractUriTemplateHandler;true;setDefaultUriVariables;;;Argument[0];Argument[-1];taint", + // writing to a `Request` or `Response` currently doesn't propagate taint to the object itself. + "org.springframework.web.util;ContentCachingRequestWrapper;false;ContentCachingRequestWrapper;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;ContentCachingRequestWrapper;false;getContentAsByteArray;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;ContentCachingResponseWrapper;false;ContentCachingResponseWrapper;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;ContentCachingResponseWrapper;false;getContentAsByteArray;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;ContentCachingResponseWrapper;false;getContentInputStream;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;DefaultUriBuilderFactory;false;DefaultUriBuilderFactory;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;DefaultUriBuilderFactory;false;builder;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;DefaultUriBuilderFactory;false;getDefaultUriVariables;;;Argument[-1];MapValue of ReturnValue;taint", + "org.springframework.web.util;DefaultUriBuilderFactory;false;setDefaultUriVariables;;;MapValue of Argument[0];Argument[-1];taint", + "org.springframework.web.util;DefaultUriBuilderFactory;false;uriString;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;HtmlUtils;false;htmlEscape;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;HtmlUtils;false;htmlEscapeDecimal;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;HtmlUtils;false;htmlEscapeHex;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;HtmlUtils;false;htmlUnescape;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;ServletContextPropertyUtils;false;resolvePlaceholders;;;Argument[0..1];ReturnValue;taint", + "org.springframework.web.util;ServletRequestPathUtils;false;getCachedPath;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;ServletRequestPathUtils;false;getCachedPathValue;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;ServletRequestPathUtils;false;getParsedRequestPath;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;ServletRequestPathUtils;false;parseAndCache;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;ServletRequestPathUtils;false;setParsedRequestPath;;;Argument[0];Argument[1];taint", + "org.springframework.web.util;UriComponents;false;UriComponents;;;Argument[0..1];Argument[-1];taint", + "org.springframework.web.util;UriComponents;false;copyToUriComponentsBuilder;;;Argument[-1];Argument[0];taint", + "org.springframework.web.util;UriComponents;false;encode;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;expand;(Map);;MapValue of Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;expand;(Object[]);;ArrayElement of Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;expand;(UriTemplateVariables);;MapValue of Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;getFragment;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;getHost;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;getPath;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;getPathSegments;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;getQuery;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;getQueryParams;;;Argument[-1];MapKey of ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;getQueryParams;;;Argument[-1];Element of MapValue of ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;getScheme;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;getSchemeSpecificPart;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;getUserInfo;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;toUri;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;toUriString;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;toString;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriComponents;false;normalize;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriComponentsBuilder;false;build;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriComponentsBuilder;false;build;(Map);;MapValue of Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriComponentsBuilder;false;build;(Object[]);;ArrayElement of Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriComponentsBuilder;false;buildAndExpand;(Map);;MapValue of Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriComponentsBuilder;false;buildAndExpand;(Object[]);;ArrayElement of Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriComponentsBuilder;false;cloneBuilder;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriComponentsBuilder;false;encode;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriComponentsBuilder;false;fromHttpRequest;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriComponentsBuilder;false;fromHttpUrl;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriComponentsBuilder;false;fromOriginHeader;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriComponentsBuilder;false;fromPath;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriComponentsBuilder;false;fromUri;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriComponentsBuilder;false;fromUriString;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriComponentsBuilder;false;parseForwardedFor;;;Argument[0..1];ReturnValue;taint", + "org.springframework.web.util;UriComponentsBuilder;false;schemeSpecificPart;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriComponentsBuilder;false;schemeSpecificPart;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriComponentsBuilder;false;toUriString;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriComponentsBuilder;false;uri;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriComponentsBuilder;false;uri;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriComponentsBuilder;false;uriComponents;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriComponentsBuilder;false;uriComponents;;;Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriComponentsBuilder;false;uriVariables;;;Argument[-1];ReturnValue;value", + "org.springframework.web.util;UriComponentsBuilder;false;uriVariables;;;MapValue of Argument[0];Argument[-1];taint", + "org.springframework.web.util;UriTemplate;false;expand;(Map);;MapValue of Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriTemplate;false;expand;(Object[]);;ArrayElement of Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriTemplate;false;getVariableNames;;;Argument[-1];Element of ReturnValue;taint", + "org.springframework.web.util;UriTemplate;false;match;;;Argument[0];MapValue of ReturnValue;taint", + "org.springframework.web.util;UriTemplate;false;toString;;;Argument[-1];ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;decode;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;encode;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;encodeAuthority;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;encodeFragment;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;encodeHost;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;encodePath;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;encodePathSegment;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;encodePort;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;encodeQuery;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;encodeQueryParam;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;encodeQueryParams;;;MapKey of Argument[0];MapKey of ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;encodeQueryParams;;;MapValue of Argument[0];MapValue of ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;encodeScheme;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;encodeUriVariables;(Map);;MapValue of Argument[0];MapValue of ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;encodeUriVariables;(Map);;MapKey of Argument[0];MapKey of ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;encodeUriVariables;(Object[]);;ArrayElement of Argument[0];ArrayElement of ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;encodeUserInfo;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UriUtils;false;extractFileExtension;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UrlPathHelper;false;decodeMatrixVariables;;;MapKey of Argument[1];MapKey of ReturnValue;value", + "org.springframework.web.util;UrlPathHelper;false;decodeMatrixVariables;;;MapValue of Argument[1];MapValue of ReturnValue;taint", + "org.springframework.web.util;UrlPathHelper;false;decodePathVariables;;;MapKey of Argument[1];MapKey of ReturnValue;value", + "org.springframework.web.util;UrlPathHelper;false;decodePathVariables;;;MapValue of Argument[1];MapValue of ReturnValue;taint", + "org.springframework.web.util;UrlPathHelper;false;decodeRequestString;;;Argument[1];ReturnValue;taint", + "org.springframework.web.util;UrlPathHelper;false;getContextPath;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UrlPathHelper;false;getOriginatingContextPath;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UrlPathHelper;false;getOriginatingQueryString;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UrlPathHelper;false;getOriginatingRequestUri;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UrlPathHelper;false;getPathWithinApplication;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UrlPathHelper;false;getPathWithinServletMapping;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UrlPathHelper;false;getRequestUri;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UrlPathHelper;false;getResolvedLookupPath;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UrlPathHelper;false;getServletPath;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UrlPathHelper;false;removeSemicolonContent;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;UrlPathHelper;false;resolveAndCacheLookupPath;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;WebUtils;false;findParameterValue;(Map,String);;MapValue of Argument[0];ReturnValue;value", + "org.springframework.web.util;WebUtils;false;findParameterValue;(ServletRequest,String);;Argument[0];ReturnValue;taint", + "org.springframework.web.util;WebUtils;false;getCookie;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;WebUtils;false;getNativeRequest;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;WebUtils;false;getNativeResponse;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;WebUtils;false;getParametersStartingWith;;;Argument[0];MapKey of ReturnValue;taint", + "org.springframework.web.util;WebUtils;false;getParametersStartingWith;;;Argument[0];MapValue of ReturnValue;taint", + "org.springframework.web.util;WebUtils;false;getRealPath;;;Argument[0..1];ReturnValue;taint", + "org.springframework.web.util;WebUtils;false;getRequiredSessionAttribute;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;WebUtils;false;getSessionAttribute;;;Argument[0];ReturnValue;taint", + "org.springframework.web.util;WebUtils;false;parseMatrixVariables;;;Argument[0];MapKey of ReturnValue;taint", + "org.springframework.web.util;WebUtils;false;parseMatrixVariables;;;Argument[0];MapValue of ReturnValue;taint", + "org.springframework.web.util;WebUtils;false;setSessionAttribute;;;Argument[2];Argument[0];taint" + ] + } +} diff --git a/java/ql/src/semmle/code/java/security/XSS.qll b/java/ql/src/semmle/code/java/security/XSS.qll index a24ad2e22dce..2ebcff73998c 100644 --- a/java/ql/src/semmle/code/java/security/XSS.qll +++ b/java/ql/src/semmle/code/java/security/XSS.qll @@ -93,7 +93,10 @@ private class DefaultXssSink extends XssSink { /** A default sanitizer that considers numeric and boolean typed data safe for writing to output. */ private class DefaultXSSSanitizer extends XssSanitizer { DefaultXSSSanitizer() { - this.getType() instanceof NumericType or this.getType() instanceof BooleanType + this.getType() instanceof NumericType or + this.getType() instanceof BooleanType or + // Match `org.springframework.web.util.HtmlUtils.htmlEscape` and possibly other methods like it. + this.asExpr().(MethodAccess).getMethod().getName().regexpMatch("(?i)html_?escape.*") } } diff --git a/java/ql/test/library-tests/frameworks/spring/webutil/Test.java b/java/ql/test/library-tests/frameworks/spring/webutil/Test.java new file mode 100644 index 000000000000..1e93454fbd74 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/spring/webutil/Test.java @@ -0,0 +1,2663 @@ +package generatedtest; + +import java.io.InputStream; +import java.net.InetSocketAddress; +import java.net.URI; +import java.nio.charset.Charset; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import javax.servlet.ServletContext; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.springframework.http.HttpRequest; +import org.springframework.http.server.RequestPath; +import org.springframework.util.MultiValueMap; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.web.util.AbstractUriTemplateHandler; +import org.springframework.web.util.ContentCachingRequestWrapper; +import org.springframework.web.util.ContentCachingResponseWrapper; +import org.springframework.web.util.CookieGenerator; +import org.springframework.web.util.DefaultUriBuilderFactory; +import org.springframework.web.util.HtmlUtils; +import org.springframework.web.util.ServletContextPropertyUtils; +import org.springframework.web.util.ServletRequestPathUtils; +import org.springframework.web.util.UriBuilder; +import org.springframework.web.util.UriBuilderFactory; +import org.springframework.web.util.UriComponents; +import org.springframework.web.util.UriComponentsBuilder; +import org.springframework.web.util.UriTemplate; +import org.springframework.web.util.UriTemplateHandler; +import org.springframework.web.util.UriUtils; +import org.springframework.web.util.UrlPathHelper; +import org.springframework.web.util.WebUtils; + +// Test case generated by GenerateFlowTestCase.ql +public class Test { + + class StubUriTemplateVariables extends HashMap implements UriComponents.UriTemplateVariables { + StubUriTemplateVariables(Map m) { super(m); } + + public Object getValue(String name) { return this.get(name); } + } + + Object getElement(Collection container) { return container.iterator().next(); } + T getMapKey(Map m) { return m.keySet().iterator().next(); } + T getMapValue(Map m) { return m.get(null); } + Map newMapWithKey(Object element) { return Map.of(element, null); } + Map newMapWithValue(Object element) { return Map.of(null, element); } + MultiValueMap newMultiValueMapWithKey(Object element) { return new LinkedMultiValueMap(Map.of(element, null)); } + MultiValueMap newMultiValueMapWithValue(Object element) { MultiValueMap m = new LinkedMultiValueMap(); m.put(null, element); return m; } + Object source() { return null; } + void sink(Object o) { } + + public void test() throws Exception { + + { + // "org.springframework.web.util;AbstractUriTemplateHandler;true;getBaseUrl;;;Argument[-1];ReturnValue;taint" + String out = null; + AbstractUriTemplateHandler in = (AbstractUriTemplateHandler)source(); + out = in.getBaseUrl(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;AbstractUriTemplateHandler;true;setBaseUrl;;;Argument[0];Argument[-1];taint" + AbstractUriTemplateHandler out = null; + String in = (String)source(); + out.setBaseUrl(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;AbstractUriTemplateHandler;true;setDefaultUriVariables;;;Argument[0];Argument[-1];taint" + AbstractUriTemplateHandler out = null; + Map in = (Map)source(); + out.setDefaultUriVariables(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;ContentCachingRequestWrapper;false;ContentCachingRequestWrapper;;;Argument[0];Argument[-1];taint" + ContentCachingRequestWrapper out = null; + HttpServletRequest in = (HttpServletRequest)source(); + out = new ContentCachingRequestWrapper(in, 0); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;ContentCachingRequestWrapper;false;ContentCachingRequestWrapper;;;Argument[0];Argument[-1];taint" + ContentCachingRequestWrapper out = null; + HttpServletRequest in = (HttpServletRequest)source(); + out = new ContentCachingRequestWrapper(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;ContentCachingRequestWrapper;false;getContentAsByteArray;;;Argument[-1];ReturnValue;taint" + byte[] out = null; + ContentCachingRequestWrapper in = (ContentCachingRequestWrapper)source(); + out = in.getContentAsByteArray(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;ContentCachingResponseWrapper;false;ContentCachingResponseWrapper;;;Argument[0];Argument[-1];taint" + ContentCachingResponseWrapper out = null; + HttpServletResponse in = (HttpServletResponse)source(); + out = new ContentCachingResponseWrapper(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;ContentCachingResponseWrapper;false;getContentAsByteArray;;;Argument[-1];ReturnValue;taint" + byte[] out = null; + ContentCachingResponseWrapper in = (ContentCachingResponseWrapper)source(); + out = in.getContentAsByteArray(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;ContentCachingResponseWrapper;false;getContentInputStream;;;Argument[-1];ReturnValue;taint" + InputStream out = null; + ContentCachingResponseWrapper in = (ContentCachingResponseWrapper)source(); + out = in.getContentInputStream(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;DefaultUriBuilderFactory;false;DefaultUriBuilderFactory;;;Argument[0];Argument[-1];taint" + DefaultUriBuilderFactory out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = new DefaultUriBuilderFactory(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;DefaultUriBuilderFactory;false;DefaultUriBuilderFactory;;;Argument[0];Argument[-1];taint" + DefaultUriBuilderFactory out = null; + String in = (String)source(); + out = new DefaultUriBuilderFactory(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;DefaultUriBuilderFactory;false;builder;;;Argument[-1];ReturnValue;taint" + UriBuilder out = null; + DefaultUriBuilderFactory in = (DefaultUriBuilderFactory)source(); + out = in.builder(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;DefaultUriBuilderFactory;false;expand;(String,Map);;MapValue of Argument[1];ReturnValue;taint" + URI out = null; + Map in = newMapWithValue(source()); + DefaultUriBuilderFactory instance = null; + out = instance.expand((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;DefaultUriBuilderFactory;false;expand;(String,Object[]);;ArrayElement of Argument[1];ReturnValue;taint" + URI out = null; + Object[] in = new Object[]{source()}; + DefaultUriBuilderFactory instance = null; + out = instance.expand((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;DefaultUriBuilderFactory;false;expand;;;Argument[-1..0];ReturnValue;taint" + URI out = null; + String in = (String)source(); + DefaultUriBuilderFactory instance = null; + out = instance.expand(in, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;DefaultUriBuilderFactory;false;expand;;;Argument[-1..0];ReturnValue;taint" + URI out = null; + String in = (String)source(); + DefaultUriBuilderFactory instance = null; + out = instance.expand(in, (Map)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;DefaultUriBuilderFactory;false;expand;;;Argument[-1..0];ReturnValue;taint" + URI out = null; + DefaultUriBuilderFactory in = (DefaultUriBuilderFactory)source(); + out = in.expand((String)null, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;DefaultUriBuilderFactory;false;expand;;;Argument[-1..0];ReturnValue;taint" + URI out = null; + DefaultUriBuilderFactory in = (DefaultUriBuilderFactory)source(); + out = in.expand((String)null, (Map)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;DefaultUriBuilderFactory;false;getDefaultUriVariables;;;Argument[-1];MapValue of ReturnValue;taint" + Map out = null; + DefaultUriBuilderFactory in = (DefaultUriBuilderFactory)source(); + out = in.getDefaultUriVariables(); + sink(getMapValue(out)); // $hasTaintFlow + } + { + // "org.springframework.web.util;DefaultUriBuilderFactory;false;setDefaultUriVariables;;;MapValue of Argument[0];Argument[-1];taint" + DefaultUriBuilderFactory out = null; + Map in = Map.of(null, source()); + out.setDefaultUriVariables(in); + sink(out); // $ hasTaintFlow + } + { + // "org.springframework.web.util;DefaultUriBuilderFactory;false;uriString;;;Argument[-1];ReturnValue;taint" + UriBuilder out = null; + DefaultUriBuilderFactory in = (DefaultUriBuilderFactory)source(); + out = in.uriString(null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;HtmlUtils;false;htmlUnescape;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = HtmlUtils.htmlUnescape(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;ServletContextPropertyUtils;false;resolvePlaceholders;;;Argument[0..1];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = ServletContextPropertyUtils.resolvePlaceholders(in, null, false); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;ServletContextPropertyUtils;false;resolvePlaceholders;;;Argument[0..1];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = ServletContextPropertyUtils.resolvePlaceholders(in, null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;ServletContextPropertyUtils;false;resolvePlaceholders;;;Argument[0..1];ReturnValue;taint" + String out = null; + ServletContext in = (ServletContext)source(); + out = ServletContextPropertyUtils.resolvePlaceholders(null, in, false); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;ServletContextPropertyUtils;false;resolvePlaceholders;;;Argument[0..1];ReturnValue;taint" + String out = null; + ServletContext in = (ServletContext)source(); + out = ServletContextPropertyUtils.resolvePlaceholders(null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;ServletRequestPathUtils;false;getCachedPath;;;Argument[0];ReturnValue;taint" + Object out = null; + ServletRequest in = (ServletRequest)source(); + out = ServletRequestPathUtils.getCachedPath(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;ServletRequestPathUtils;false;getCachedPathValue;;;Argument[0];ReturnValue;taint" + String out = null; + ServletRequest in = (ServletRequest)source(); + out = ServletRequestPathUtils.getCachedPathValue(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;ServletRequestPathUtils;false;getParsedRequestPath;;;Argument[0];ReturnValue;taint" + RequestPath out = null; + ServletRequest in = (ServletRequest)source(); + out = ServletRequestPathUtils.getParsedRequestPath(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;ServletRequestPathUtils;false;parseAndCache;;;Argument[0];ReturnValue;taint" + RequestPath out = null; + HttpServletRequest in = (HttpServletRequest)source(); + out = ServletRequestPathUtils.parseAndCache(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;ServletRequestPathUtils;false;setParsedRequestPath;;;Argument[0];Argument[1];taint" + ServletRequest out = null; + RequestPath in = (RequestPath)source(); + ServletRequestPathUtils.setParsedRequestPath(in, out); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;build;(Map);;MapValue of Argument[0];Argument[-1];taint" + UriBuilder out = null; + Map in = newMapWithValue(source()); + out.build(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;build;(Map);;MapValue of Argument[0];Argument[-1];taint" + UriBuilder out = null; + Map in = newMapWithValue(source()); + out.build(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;build;(Map);;MapValue of Argument[0];ReturnValue;taint" + URI out = null; + Map in = newMapWithValue(source()); + UriBuilder instance = null; + out = instance.build(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;build;(Map);;MapValue of Argument[0];ReturnValue;taint" + URI out = null; + Map in = newMapWithValue(source()); + UriBuilder instance = null; + out = instance.build(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;build;;;Argument[-1];ReturnValue;taint" + URI out = null; + UriBuilder in = (UriBuilder)source(); + out = in.build(false); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;build;;;Argument[-1];ReturnValue;taint" + URI out = null; + UriBuilder in = (UriBuilder)source(); + out = in.build(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;build;;;Argument[-1];ReturnValue;taint" + URI out = null; + UriBuilder in = (UriBuilder)source(); + out = in.build((Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;build;;;Argument[-1];ReturnValue;taint" + URI out = null; + UriBuilder in = (UriBuilder)source(); + out = in.build((Map)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;build;;;Argument[-1];ReturnValue;taint" + URI out = null; + UriBuilder in = (UriBuilder)source(); + out = in.build((Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;build;;;Argument[-1];ReturnValue;taint" + URI out = null; + UriBuilder in = (UriBuilder)source(); + out = in.build((Map)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;fragment;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.fragment(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;fragment;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.fragment(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;fragment;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.fragment(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;fragment;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.fragment(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;fragment;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.fragment(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;fragment;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.fragment(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;host;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.host(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;host;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.host(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;host;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.host(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;host;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.host(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;path;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.path(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;path;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.path(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;path;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.path(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;path;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.path(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;path;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.path(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;path;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.path(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;pathSegment;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.pathSegment((String[])null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;pathSegment;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.pathSegment((String[])null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;pathSegment;;;ArrayElement of Argument[0];Argument[-1];taint" + UriBuilder out = null; + String[] in = new String[]{(String)source()}; + out.pathSegment((String[])in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;pathSegment;;;ArrayElement of Argument[0];Argument[-1];taint" + UriBuilder out = null; + String[] in = new String[]{(String)source()}; + out.pathSegment((String[])in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;pathSegment;;;ArrayElement of Argument[0];ReturnValue;taint" + UriBuilder out = null; + String[] in = new String[]{(String)source()}; + UriBuilder instance = null; + out = instance.pathSegment((String[])in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;pathSegment;;;ArrayElement of Argument[0];ReturnValue;taint" + UriBuilder out = null; + String[] in = new String[]{(String)source()}; + UriBuilder instance = null; + out = instance.pathSegment((String[])in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;port;(java.lang.String);;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.port(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;port;(java.lang.String);;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.port(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;port;(java.lang.String);;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.port(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;port;(java.lang.String);;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.port(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;port;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.port(0); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;port;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.port((String)null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;port;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.port(0); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;port;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.port((String)null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;query;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.query(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;query;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.query(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;query;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.query(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;query;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.query(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;query;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.query(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;query;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.query(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;(String,Collection);;Element of Argument[1];Argument[-1];taint" + UriBuilder out = null; + Collection in = List.of(source()); + out.queryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;(String,Collection);;Element of Argument[1];Argument[-1];taint" + UriBuilder out = null; + Collection in = List.of(source()); + out.queryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;(String,Collection);;Element of Argument[1];ReturnValue;taint" + UriBuilder out = null; + Collection in = List.of(source()); + UriBuilder instance = null; + out = instance.queryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;(String,Collection);;Element of Argument[1];ReturnValue;taint" + UriBuilder out = null; + Collection in = List.of(source()); + UriBuilder instance = null; + out = instance.queryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;(String,Object[]);;ArrayElement of Argument[1];Argument[-1];taint" + UriBuilder out = null; + Object[] in = new Object[]{source()}; + out.queryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;(String,Object[]);;ArrayElement of Argument[1];Argument[-1];taint" + UriBuilder out = null; + Object[] in = new Object[]{source()}; + out.queryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;(String,Object[]);;ArrayElement of Argument[1];ReturnValue;taint" + UriBuilder out = null; + Object[] in = new Object[]{source()}; + UriBuilder instance = null; + out = instance.queryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;(String,Object[]);;ArrayElement of Argument[1];ReturnValue;taint" + UriBuilder out = null; + Object[] in = new Object[]{source()}; + UriBuilder instance = null; + out = instance.queryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.queryParam((String)null, (Object[])null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.queryParam((String)null, (Collection)null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.queryParam((String)null, (Object[])null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.queryParam((String)null, (Collection)null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.queryParam(in, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.queryParam(in, (Collection)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.queryParam(in, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.queryParam(in, (Collection)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.queryParam(in, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.queryParam(in, (Collection)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.queryParam(in, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParam;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.queryParam(in, (Collection)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParamIfPresent;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.queryParamIfPresent(null, null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParamIfPresent;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.queryParamIfPresent(null, null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParamIfPresent;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.queryParamIfPresent(in, null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParamIfPresent;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.queryParamIfPresent(in, null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParamIfPresent;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.queryParamIfPresent(in, null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParamIfPresent;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.queryParamIfPresent(in, null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParamIfPresent;;;Element of Argument[1];Argument[-1];taint" + UriBuilder out = null; + Optional in = Optional.of(source()); + out.queryParamIfPresent(null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParamIfPresent;;;Element of Argument[1];Argument[-1];taint" + UriBuilder out = null; + Optional in = Optional.of(source()); + out.queryParamIfPresent(null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParamIfPresent;;;Element of Argument[1];ReturnValue;taint" + UriBuilder out = null; + Optional in = Optional.of(source()); + UriBuilder instance = null; + out = instance.queryParamIfPresent(null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParamIfPresent;;;Element of Argument[1];ReturnValue;taint" + UriBuilder out = null; + Optional in = Optional.of(source()); + UriBuilder instance = null; + out = instance.queryParamIfPresent(null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParams;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.queryParams(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParams;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.queryParams(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParams;;;MapKey of Argument[0];Argument[-1];taint" + UriBuilder out = null; + MultiValueMap in = newMultiValueMapWithKey(source()); + out.queryParams(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParams;;;MapKey of Argument[0];Argument[-1];taint" + UriBuilder out = null; + MultiValueMap in = newMultiValueMapWithKey(source()); + out.queryParams(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParams;;;MapKey of Argument[0];ReturnValue;taint" + UriBuilder out = null; + MultiValueMap in = newMultiValueMapWithKey(source()); + UriBuilder instance = null; + out = instance.queryParams(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParams;;;MapKey of Argument[0];ReturnValue;taint" + UriBuilder out = null; + MultiValueMap in = newMultiValueMapWithKey(source()); + UriBuilder instance = null; + out = instance.queryParams(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParams;;;Element of MapValue of Argument[0];Argument[-1];taint" + UriBuilder out = null; + MultiValueMap in = newMultiValueMapWithValue(source()); + out.queryParams(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParams;;;Element of MapValue of Argument[0];Argument[-1];taint" + UriBuilder out = null; + MultiValueMap in = newMultiValueMapWithValue(source()); + out.queryParams(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParams;;;Element of MapValue of Argument[0];ReturnValue;taint" + UriBuilder out = null; + MultiValueMap in = newMultiValueMapWithValue(source()); + UriBuilder instance = null; + out = instance.queryParams(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;queryParams;;;Element of MapValue of Argument[0];ReturnValue;taint" + UriBuilder out = null; + MultiValueMap in = newMultiValueMapWithValue(source()); + UriBuilder instance = null; + out = instance.queryParams(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replacePath;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.replacePath(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replacePath;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.replacePath(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replacePath;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.replacePath(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replacePath;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.replacePath(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replacePath;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.replacePath(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replacePath;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.replacePath(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQuery;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.replaceQuery(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQuery;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.replaceQuery(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQuery;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.replaceQuery(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQuery;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.replaceQuery(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQuery;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.replaceQuery(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQuery;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.replaceQuery(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;(String,Collection);;Element of Argument[1];Argument[-1];taint" + UriBuilder out = null; + Collection in = List.of(source()); + out.replaceQueryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;(String,Collection);;Element of Argument[1];Argument[-1];taint" + UriBuilder out = null; + Collection in = List.of(source()); + out.replaceQueryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;(String,Collection);;Element of Argument[1];ReturnValue;taint" + UriBuilder out = null; + Collection in = List.of(source()); + UriBuilder instance = null; + out = instance.replaceQueryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;(String,Collection);;Element of Argument[1];ReturnValue;taint" + UriBuilder out = null; + Collection in = List.of(source()); + UriBuilder instance = null; + out = instance.replaceQueryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;(String,Object[]);;ArrayElement of Argument[1];Argument[-1];taint" + UriBuilder out = null; + Object[] in = new Object[]{source()}; + out.replaceQueryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;(String,Object[]);;ArrayElement of Argument[1];Argument[-1];taint" + UriBuilder out = null; + Object[] in = new Object[]{source()}; + out.replaceQueryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;(String,Object[]);;ArrayElement of Argument[1];ReturnValue;taint" + UriBuilder out = null; + Object[] in = new Object[]{source()}; + UriBuilder instance = null; + out = instance.replaceQueryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;(String,Object[]);;ArrayElement of Argument[1];ReturnValue;taint" + UriBuilder out = null; + Object[] in = new Object[]{source()}; + UriBuilder instance = null; + out = instance.replaceQueryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.replaceQueryParam((String)null, (Object[])null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.replaceQueryParam((String)null, (Collection)null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.replaceQueryParam((String)null, (Object[])null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.replaceQueryParam((String)null, (Collection)null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.replaceQueryParam(in, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.replaceQueryParam(in, (Collection)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.replaceQueryParam(in, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.replaceQueryParam(in, (Collection)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.replaceQueryParam(in, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.replaceQueryParam(in, (Collection)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.replaceQueryParam(in, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParam;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.replaceQueryParam(in, (Collection)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParams;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.replaceQueryParams(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParams;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.replaceQueryParams(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParams;;;MapKey of Argument[0];ReturnValue;taint" + UriBuilder out = null; + MultiValueMap in = newMultiValueMapWithKey(source()); + UriBuilder instance = null; + out = instance.replaceQueryParams(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParams;;;MapKey of Argument[0];ReturnValue;taint" + UriBuilder out = null; + MultiValueMap in = newMultiValueMapWithKey(source()); + UriBuilder instance = null; + out = instance.replaceQueryParams(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParams;;;Element of MapValue of Argument[0];ReturnValue;taint" + UriBuilder out = null; + MultiValueMap in = newMultiValueMapWithValue(source()); + UriBuilder instance = null; + out = instance.replaceQueryParams(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;replaceQueryParams;;;Element of MapValue of Argument[0];ReturnValue;taint" + UriBuilder out = null; + MultiValueMap in = newMultiValueMapWithValue(source()); + UriBuilder instance = null; + out = instance.replaceQueryParams(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;scheme;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.scheme(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;scheme;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.scheme(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;scheme;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.scheme(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;scheme;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.scheme(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;scheme;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.scheme(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;scheme;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.scheme(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;userInfo;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.userInfo(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;userInfo;;;Argument[-1];ReturnValue;value" + UriBuilder out = null; + UriBuilder in = (UriBuilder)source(); + out = in.userInfo(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriBuilder;true;userInfo;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.userInfo(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;userInfo;;;Argument[0];Argument[-1];taint" + UriBuilder out = null; + String in = (String)source(); + out.userInfo(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;userInfo;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.userInfo(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilder;true;userInfo;;;Argument[0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilder instance = null; + out = instance.userInfo(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilderFactory;true;builder;;;Argument[-1];ReturnValue;taint" + UriBuilder out = null; + UriBuilderFactory in = (UriBuilderFactory)source(); + out = in.builder(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilderFactory;true;builder;;;Argument[-1];ReturnValue;taint" + UriBuilder out = null; + DefaultUriBuilderFactory in = (DefaultUriBuilderFactory)source(); + out = in.builder(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilderFactory;true;uriString;;;Argument[-1..0];ReturnValue;taint" + UriBuilder out = null; + UriBuilderFactory in = (UriBuilderFactory)source(); + out = in.uriString(null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilderFactory;true;uriString;;;Argument[-1..0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + UriBuilderFactory instance = null; + out = instance.uriString(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilderFactory;true;uriString;;;Argument[-1..0];ReturnValue;taint" + UriBuilder out = null; + String in = (String)source(); + DefaultUriBuilderFactory instance = null; + out = instance.uriString(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriBuilderFactory;true;uriString;;;Argument[-1..0];ReturnValue;taint" + UriBuilder out = null; + DefaultUriBuilderFactory in = (DefaultUriBuilderFactory)source(); + out = in.uriString(null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents$UriTemplateVariables;true;getValue;;;MapValue of Argument[-1];ReturnValue;value" + Object out = null; + UriComponents.UriTemplateVariables in = new StubUriTemplateVariables(Map.of(null, source())); + out = in.getValue(null); + sink(out); // $hasValueFlow + } + // { + // // "org.springframework.web.util;UriComponents;false;UriComponents;;;Argument[0..1];Argument[-1];taint" + // UriComponents out = null; + // String in = (String)source(); + // out = new UriComponents(null, in); + // sink(out); // $hasTaintFlow + // } + // { + // // "org.springframework.web.util;UriComponents;false;UriComponents;;;Argument[0..1];Argument[-1];taint" + // UriComponents out = null; + // String in = (String)source(); + // out = new UriComponents(in, null); + // sink(out); // $hasTaintFlow + // } + { + // "org.springframework.web.util;UriComponents;false;encode;;;Argument[-1];ReturnValue;taint" + UriComponents out = null; + UriComponents in = (UriComponents)source(); + out = in.encode(null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;encode;;;Argument[-1];ReturnValue;taint" + UriComponents out = null; + UriComponents in = (UriComponents)source(); + out = in.encode(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;expand;(Map);;MapValue of Argument[0];ReturnValue;taint" + UriComponents out = null; + Map in = newMapWithValue(source()); + UriComponents instance = null; + out = instance.expand(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;expand;(Object[]);;ArrayElement of Argument[0];ReturnValue;taint" + UriComponents out = null; + Object[] in = new Object[]{source()}; + UriComponents instance = null; + out = instance.expand(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;expand;(UriTemplateVariables);;MapValue of Argument[0];ReturnValue;taint" + UriComponents out = null; + UriComponents.UriTemplateVariables in = new StubUriTemplateVariables(Map.of(null, source())); + UriComponents instance = null; + out = instance.expand(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;getFragment;;;Argument[-1];ReturnValue;taint" + String out = null; + UriComponents in = (UriComponents)source(); + out = in.getFragment(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;getHost;;;Argument[-1];ReturnValue;taint" + String out = null; + UriComponents in = (UriComponents)source(); + out = in.getHost(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;getPath;;;Argument[-1];ReturnValue;taint" + String out = null; + UriComponents in = (UriComponents)source(); + out = in.getPath(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;getPathSegments;;;Argument[-1];ReturnValue;taint" + List out = null; + UriComponents in = (UriComponents)source(); + out = in.getPathSegments(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;getQuery;;;Argument[-1];ReturnValue;taint" + String out = null; + UriComponents in = (UriComponents)source(); + out = in.getQuery(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;getQueryParams;;;Argument[-1];Element of MapValue of ReturnValue;taint" + MultiValueMap out = null; + UriComponents in = (UriComponents)source(); + out = in.getQueryParams(); + sink(getElement((List)getMapValue(out))); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;getQueryParams;;;Argument[-1];MapKey of ReturnValue;taint" + MultiValueMap out = null; + UriComponents in = (UriComponents)source(); + out = in.getQueryParams(); + sink(getMapKey(out)); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;getScheme;;;Argument[-1];ReturnValue;taint" + String out = null; + UriComponents in = (UriComponents)source(); + out = in.getScheme(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;getSchemeSpecificPart;;;Argument[-1];ReturnValue;taint" + String out = null; + UriComponents in = (UriComponents)source(); + out = in.getSchemeSpecificPart(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;getUserInfo;;;Argument[-1];ReturnValue;taint" + String out = null; + UriComponents in = (UriComponents)source(); + out = in.getUserInfo(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;toUri;;;Argument[-1];ReturnValue;taint" + URI out = null; + UriComponents in = (UriComponents)source(); + out = in.toUri(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;toUriString;;;Argument[-1];ReturnValue;taint" + String out = null; + UriComponents in = (UriComponents)source(); + out = in.toUriString(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;build;(Map);;MapValue of Argument[0];ReturnValue;taint" + URI out = null; + Map in = newMapWithValue(source()); + UriComponentsBuilder instance = null; + out = instance.build(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;build;(Object[]);;ArrayElement of Argument[0];ReturnValue;taint" + URI out = null; + Object[] in = new Object[]{source()}; + UriComponentsBuilder instance = null; + out = instance.build(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;build;;;Argument[-1];ReturnValue;taint" + UriComponents out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.build(false); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;build;;;Argument[-1];ReturnValue;taint" + UriComponents out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.build(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;build;;;Argument[-1];ReturnValue;taint" + URI out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.build((Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;build;;;Argument[-1];ReturnValue;taint" + URI out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.build((Map)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;buildAndExpand;(Map);;MapValue of Argument[0];ReturnValue;taint" + UriComponents out = null; + Map in = newMapWithValue(source()); + UriComponentsBuilder instance = null; + out = instance.buildAndExpand(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;buildAndExpand;(Object[]);;ArrayElement of Argument[0];ReturnValue;taint" + UriComponents out = null; + Object[] in = new Object[]{source()}; + UriComponentsBuilder instance = null; + out = instance.buildAndExpand(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;cloneBuilder;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.cloneBuilder(); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;encode;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.encode(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;encode;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.encode(); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;fragment;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.fragment(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;fragment;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + UriComponentsBuilder instance = null; + out = instance.fragment(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;fromHttpRequest;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + HttpRequest in = (HttpRequest)source(); + out = UriComponentsBuilder.fromHttpRequest(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;fromHttpUrl;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + out = UriComponentsBuilder.fromHttpUrl(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;fromOriginHeader;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + out = UriComponentsBuilder.fromOriginHeader(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;fromPath;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + out = UriComponentsBuilder.fromPath(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;fromUri;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + URI in = (URI)source(); + out = UriComponentsBuilder.fromUri(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;fromUriString;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + out = UriComponentsBuilder.fromUriString(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;host;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.host(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;host;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + UriComponentsBuilder instance = null; + out = instance.host(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;parseForwardedFor;;;Argument[0..1];ReturnValue;taint" + InetSocketAddress out = null; + InetSocketAddress in = (InetSocketAddress)source(); + out = UriComponentsBuilder.parseForwardedFor(null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;parseForwardedFor;;;Argument[0..1];ReturnValue;taint" + InetSocketAddress out = null; + HttpRequest in = (HttpRequest)source(); + out = UriComponentsBuilder.parseForwardedFor(in, null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;path;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.path(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;path;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + UriComponentsBuilder instance = null; + out = instance.path(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;pathSegment;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.pathSegment((String[])null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;pathSegment;;;ArrayElement of Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String[] in = new String[]{(String)source()}; + UriComponentsBuilder instance = null; + out = instance.pathSegment(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;port;(String);;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + UriComponentsBuilder instance = null; + out = instance.port(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;port;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.port(0); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;port;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.port((String)null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;query;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.query(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;query;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + UriComponentsBuilder instance = null; + out = instance.query(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;queryParam;(String,Collection);;Element of Argument[1];ReturnValue;taint" + UriComponentsBuilder out = null; + Collection in = List.of(source()); + UriComponentsBuilder instance = null; + out = instance.queryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;queryParam;(String,Object[]);;ArrayElement of Argument[1];ReturnValue;taint" + UriComponentsBuilder out = null; + Object[] in = new Object[]{source()}; + UriComponentsBuilder instance = null; + out = instance.queryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;queryParam;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.queryParam((String)null, (Object[])null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;queryParam;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.queryParam((String)null, (Collection)null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;queryParam;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + UriComponentsBuilder instance = null; + out = instance.queryParam(in, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;queryParam;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + UriComponentsBuilder instance = null; + out = instance.queryParam(in, (Collection)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;queryParamIfPresent;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.queryParamIfPresent(null, null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;queryParamIfPresent;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + UriComponentsBuilder instance = null; + out = instance.queryParamIfPresent(in, null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;queryParamIfPresent;;;Element of Argument[1];ReturnValue;taint" + UriComponentsBuilder out = null; + Optional in = Optional.of(source()); + UriComponentsBuilder instance = null; + out = instance.queryParamIfPresent(null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;queryParams;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.queryParams(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;queryParams;;;MapKey of Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + MultiValueMap in = newMultiValueMapWithKey(source()); + UriComponentsBuilder instance = null; + out = instance.queryParams(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;queryParams;;;Element of MapValue of Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + MultiValueMap in = newMultiValueMapWithValue(source()); + UriComponentsBuilder instance = null; + out = instance.queryParams(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;replacePath;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.replacePath(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;replacePath;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + UriComponentsBuilder instance = null; + out = instance.replacePath(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;replaceQuery;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.replaceQuery(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;replaceQuery;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + UriComponentsBuilder instance = null; + out = instance.replaceQuery(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;replaceQueryParam;(String,Collection);;Element of Argument[1];ReturnValue;taint" + UriComponentsBuilder out = null; + Collection in = List.of(source()); + UriComponentsBuilder instance = null; + out = instance.replaceQueryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;replaceQueryParam;(String,Object[]);;ArrayElement of Argument[1];ReturnValue;taint" + UriComponentsBuilder out = null; + Object[] in = new Object[]{source()}; + UriComponentsBuilder instance = null; + out = instance.replaceQueryParam((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;replaceQueryParam;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.replaceQueryParam((String)null, (Object[])null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;replaceQueryParam;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.replaceQueryParam((String)null, (Collection)null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;replaceQueryParam;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + UriComponentsBuilder instance = null; + out = instance.replaceQueryParam(in, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;replaceQueryParam;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + UriComponentsBuilder instance = null; + out = instance.replaceQueryParam(in, (Collection)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;replaceQueryParams;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.replaceQueryParams(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;replaceQueryParams;;;MapKey of Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + MultiValueMap in = newMultiValueMapWithKey(source()); + UriComponentsBuilder instance = null; + out = instance.replaceQueryParams(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;replaceQueryParams;;;Element of MapValue of Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + MultiValueMap in = newMultiValueMapWithValue(source()); + UriComponentsBuilder instance = null; + out = instance.replaceQueryParams(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;scheme;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.scheme(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;scheme;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + UriComponentsBuilder instance = null; + out = instance.scheme(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;schemeSpecificPart;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.schemeSpecificPart(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;schemeSpecificPart;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + UriComponentsBuilder instance = null; + out = instance.schemeSpecificPart(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;toUriString;;;Argument[-1];ReturnValue;taint" + String out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.toUriString(); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;uri;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.uri(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;uri;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + URI in = (URI)source(); + UriComponentsBuilder instance = null; + out = instance.uri(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;uriComponents;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.uriComponents(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;uriComponents;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + UriComponents in = (UriComponents)source(); + UriComponentsBuilder instance = null; + out = instance.uriComponents(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;uriVariables;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.uriVariables(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;uriVariables;;;MapValue of Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + Map in = newMapWithValue(source()); + UriComponentsBuilder instance = null; + out = instance.uriVariables(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;userInfo;;;Argument[-1];ReturnValue;value" + UriComponentsBuilder out = null; + UriComponentsBuilder in = (UriComponentsBuilder)source(); + out = in.userInfo(null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;UriComponentsBuilder;false;userInfo;;;Argument[0];ReturnValue;taint" + UriComponentsBuilder out = null; + String in = (String)source(); + UriComponentsBuilder instance = null; + out = instance.userInfo(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplate;false;expand;(Map);;MapValue of Argument[0];ReturnValue;taint" + URI out = null; + Map in = newMapWithValue(source()); + UriTemplate instance = null; + out = instance.expand(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplate;false;expand;(Object[]);;ArrayElement of Argument[0];ReturnValue;taint" + URI out = null; + Object[] in = new Object[]{source()}; + UriTemplate instance = null; + out = instance.expand(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplate;false;getVariableNames;;;Argument[-1];Element of ReturnValue;taint" + List out = null; + UriTemplate in = (UriTemplate)source(); + out = in.getVariableNames(); + sink(getElement(out)); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplate;false;match;;;Argument[0];MapValue of ReturnValue;taint" + Map out = null; + String in = (String)source(); + UriTemplate instance = null; + out = instance.match(in); + sink(getMapValue(out)); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;(String,Map);;MapValue of Argument[1];ReturnValue;taint" + URI out = null; + Map in = newMapWithValue(source()); + UriTemplateHandler instance = null; + out = instance.expand((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;(String,Map);;MapValue of Argument[1];ReturnValue;taint" + URI out = null; + Map in = newMapWithValue(source()); + DefaultUriBuilderFactory instance = null; + out = instance.expand((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;(String,Map);;MapValue of Argument[1];ReturnValue;taint" + URI out = null; + Map in = newMapWithValue(source()); + AbstractUriTemplateHandler instance = null; + out = instance.expand((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;(String,Object[]);;ArrayElement of Argument[1];ReturnValue;taint" + URI out = null; + Object[] in = new Object[]{source()}; + UriTemplateHandler instance = null; + out = instance.expand((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;(String,Object[]);;ArrayElement of Argument[1];ReturnValue;taint" + URI out = null; + Object[] in = new Object[]{source()}; + DefaultUriBuilderFactory instance = null; + out = instance.expand((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;(String,Object[]);;ArrayElement of Argument[1];ReturnValue;taint" + URI out = null; + Object[] in = new Object[]{source()}; + AbstractUriTemplateHandler instance = null; + out = instance.expand((String)null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;;;Argument[-1..0];ReturnValue;taint" + URI out = null; + UriTemplateHandler in = (UriTemplateHandler)source(); + out = in.expand((String)null, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;;;Argument[-1..0];ReturnValue;taint" + URI out = null; + UriTemplateHandler in = (UriTemplateHandler)source(); + out = in.expand((String)null, (Map)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;;;Argument[-1..0];ReturnValue;taint" + URI out = null; + String in = (String)source(); + UriTemplateHandler instance = null; + out = instance.expand(in, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;;;Argument[-1..0];ReturnValue;taint" + URI out = null; + String in = (String)source(); + UriTemplateHandler instance = null; + out = instance.expand(in, (Map)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;;;Argument[-1..0];ReturnValue;taint" + URI out = null; + String in = (String)source(); + DefaultUriBuilderFactory instance = null; + out = instance.expand(in, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;;;Argument[-1..0];ReturnValue;taint" + URI out = null; + String in = (String)source(); + DefaultUriBuilderFactory instance = null; + out = instance.expand(in, (Map)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;;;Argument[-1..0];ReturnValue;taint" + URI out = null; + String in = (String)source(); + AbstractUriTemplateHandler instance = null; + out = instance.expand(in, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;;;Argument[-1..0];ReturnValue;taint" + URI out = null; + String in = (String)source(); + AbstractUriTemplateHandler instance = null; + out = instance.expand(in, (Map)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;;;Argument[-1..0];ReturnValue;taint" + URI out = null; + DefaultUriBuilderFactory in = (DefaultUriBuilderFactory)source(); + out = in.expand((String)null, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;;;Argument[-1..0];ReturnValue;taint" + URI out = null; + DefaultUriBuilderFactory in = (DefaultUriBuilderFactory)source(); + out = in.expand((String)null, (Map)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;;;Argument[-1..0];ReturnValue;taint" + URI out = null; + AbstractUriTemplateHandler in = (AbstractUriTemplateHandler)source(); + out = in.expand((String)null, (Object[])null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplateHandler;true;expand;;;Argument[-1..0];ReturnValue;taint" + URI out = null; + AbstractUriTemplateHandler in = (AbstractUriTemplateHandler)source(); + out = in.expand((String)null, (Map)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;decode;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.decode(in, (String)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;decode;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.decode(in, (Charset)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encode;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encode(in, (String)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encode;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encode(in, (Charset)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeAuthority;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodeAuthority(in, (String)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeAuthority;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodeAuthority(in, (Charset)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeFragment;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodeFragment(in, (String)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeFragment;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodeFragment(in, (Charset)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeHost;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodeHost(in, (String)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeHost;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodeHost(in, (Charset)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodePath;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodePath(in, (String)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodePath;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodePath(in, (Charset)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodePathSegment;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodePathSegment(in, (String)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodePathSegment;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodePathSegment(in, (Charset)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodePort;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodePort(in, (String)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodePort;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodePort(in, (Charset)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeQuery;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodeQuery(in, (String)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeQuery;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodeQuery(in, (Charset)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeQueryParam;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodeQueryParam(in, (String)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeQueryParam;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodeQueryParam(in, (Charset)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeQueryParams;;;MapKey of Argument[0];MapKey of ReturnValue;taint" + MultiValueMap out = null; + MultiValueMap in = newMultiValueMapWithKey(source()); + out = UriUtils.encodeQueryParams(in); + sink(getMapKey(out)); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeQueryParams;;;MapValue of Argument[0];MapValue of ReturnValue;taint" + MultiValueMap out = null; + MultiValueMap in = newMultiValueMapWithValue(source()); + out = UriUtils.encodeQueryParams(in); + sink(getMapValue(out)); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeScheme;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodeScheme(in, (String)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeScheme;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodeScheme(in, (Charset)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeUriVariables;(Map);;MapKey of Argument[0];MapKey of ReturnValue;taint" + Map out = null; + Map in = newMapWithKey(source()); + out = UriUtils.encodeUriVariables(in); + sink(getMapKey(out)); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeUriVariables;(Map);;MapValue of Argument[0];MapValue of ReturnValue;taint" + Map out = null; + Map in = newMapWithValue(source()); + out = UriUtils.encodeUriVariables(in); + sink(getMapValue(out)); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeUriVariables;(Object[]);;ArrayElement of Argument[0];ArrayElement of ReturnValue;taint" + Object[] out = null; + Object[] in = new Object[]{source()}; + out = UriUtils.encodeUriVariables(in); + sink(out[0]); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeUserInfo;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodeUserInfo(in, (String)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;encodeUserInfo;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.encodeUserInfo(in, (Charset)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UriUtils;false;extractFileExtension;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = UriUtils.extractFileExtension(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UrlPathHelper;false;decodeMatrixVariables;;;MapKey of Argument[1];MapKey of ReturnValue;value" + MultiValueMap out = null; + MultiValueMap in = newMultiValueMapWithKey(source()); + UrlPathHelper instance = null; + out = instance.decodeMatrixVariables(null, in); + sink(getMapKey(out)); // $hasValueFlow + } + { + // "org.springframework.web.util;UrlPathHelper;false;decodeMatrixVariables;;;MapValue of Argument[1];MapValue of ReturnValue;taint" + MultiValueMap out = null; + MultiValueMap in = newMultiValueMapWithValue(source()); + UrlPathHelper instance = null; + out = instance.decodeMatrixVariables(null, in); + sink(getMapValue(out)); // $hasTaintFlow + } + { + // "org.springframework.web.util;UrlPathHelper;false;decodePathVariables;;;MapKey of Argument[1];MapKey of ReturnValue;value" + Map out = null; + Map in = newMapWithKey(source()); + UrlPathHelper instance = null; + out = instance.decodePathVariables(null, in); + sink(getMapKey(out)); // $hasValueFlow + } + { + // "org.springframework.web.util;UrlPathHelper;false;decodePathVariables;;;MapValue of Argument[1];MapValue of ReturnValue;taint" + Map out = null; + Map in = newMapWithValue(source()); + UrlPathHelper instance = null; + out = instance.decodePathVariables(null, in); + sink(getMapValue(out)); // $hasTaintFlow + } + { + // "org.springframework.web.util;UrlPathHelper;false;decodeRequestString;;;Argument[1];ReturnValue;taint" + String out = null; + String in = (String)source(); + UrlPathHelper instance = null; + out = instance.decodeRequestString(null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UrlPathHelper;false;getContextPath;;;Argument[0];ReturnValue;taint" + String out = null; + HttpServletRequest in = (HttpServletRequest)source(); + UrlPathHelper instance = null; + out = instance.getContextPath(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UrlPathHelper;false;getOriginatingContextPath;;;Argument[0];ReturnValue;taint" + String out = null; + HttpServletRequest in = (HttpServletRequest)source(); + UrlPathHelper instance = null; + out = instance.getOriginatingContextPath(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UrlPathHelper;false;getOriginatingQueryString;;;Argument[0];ReturnValue;taint" + String out = null; + HttpServletRequest in = (HttpServletRequest)source(); + UrlPathHelper instance = null; + out = instance.getOriginatingQueryString(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UrlPathHelper;false;getOriginatingRequestUri;;;Argument[0];ReturnValue;taint" + String out = null; + HttpServletRequest in = (HttpServletRequest)source(); + UrlPathHelper instance = null; + out = instance.getOriginatingRequestUri(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UrlPathHelper;false;getRequestUri;;;Argument[0];ReturnValue;taint" + String out = null; + HttpServletRequest in = (HttpServletRequest)source(); + UrlPathHelper instance = null; + out = instance.getRequestUri(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UrlPathHelper;false;getResolvedLookupPath;;;Argument[0];ReturnValue;taint" + String out = null; + ServletRequest in = (ServletRequest)source(); + out = UrlPathHelper.getResolvedLookupPath(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UrlPathHelper;false;getServletPath;;;Argument[0];ReturnValue;taint" + String out = null; + HttpServletRequest in = (HttpServletRequest)source(); + UrlPathHelper instance = null; + out = instance.getServletPath(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UrlPathHelper;false;removeSemicolonContent;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + UrlPathHelper instance = null; + out = instance.removeSemicolonContent(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;UrlPathHelper;false;resolveAndCacheLookupPath;;;Argument[0];ReturnValue;taint" + String out = null; + HttpServletRequest in = (HttpServletRequest)source(); + UrlPathHelper instance = null; + out = instance.resolveAndCacheLookupPath(in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;WebUtils;false;findParameterValue;(Map,String);;MapValue of Argument[0];ReturnValue;value" + String out = null; + Map in = newMapWithValue(source()); + out = WebUtils.findParameterValue(in, (String)null); + sink(out); // $hasValueFlow + } + { + // "org.springframework.web.util;WebUtils;false;findParameterValue;(ServletRequest,String);;Argument[0];ReturnValue;taint" + String out = null; + ServletRequest in = (ServletRequest)source(); + out = WebUtils.findParameterValue(in, (String)null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;WebUtils;false;getCookie;;;Argument[0];ReturnValue;taint" + Cookie out = null; + HttpServletRequest in = (HttpServletRequest)source(); + out = WebUtils.getCookie(in, null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;WebUtils;false;getNativeRequest;;;Argument[0];ReturnValue;taint" + Object out = null; + ServletRequest in = (ServletRequest)source(); + out = WebUtils.getNativeRequest(in, null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;WebUtils;false;getNativeResponse;;;Argument[0];ReturnValue;taint" + Object out = null; + ServletResponse in = (ServletResponse)source(); + out = WebUtils.getNativeResponse(in, null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;WebUtils;false;getParametersStartingWith;;;Argument[0];MapKey of ReturnValue;taint" + Map out = null; + ServletRequest in = (ServletRequest)source(); + out = WebUtils.getParametersStartingWith(in, null); + sink(getMapKey(out)); // $hasTaintFlow + } + { + // "org.springframework.web.util;WebUtils;false;getParametersStartingWith;;;Argument[0];MapValue of ReturnValue;taint" + Map out = null; + ServletRequest in = (ServletRequest)source(); + out = WebUtils.getParametersStartingWith(in, null); + sink(getMapValue(out)); // $hasTaintFlow + } + { + // "org.springframework.web.util;WebUtils;false;getRealPath;;;Argument[0..1];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = WebUtils.getRealPath(null, in); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;WebUtils;false;getRealPath;;;Argument[0..1];ReturnValue;taint" + String out = null; + ServletContext in = (ServletContext)source(); + out = WebUtils.getRealPath(in, null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;WebUtils;false;getRequiredSessionAttribute;;;Argument[0];ReturnValue;taint" + Object out = null; + HttpServletRequest in = (HttpServletRequest)source(); + out = WebUtils.getRequiredSessionAttribute(in, null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;WebUtils;false;getSessionAttribute;;;Argument[0];ReturnValue;taint" + Object out = null; + HttpServletRequest in = (HttpServletRequest)source(); + out = WebUtils.getSessionAttribute(in, null); + sink(out); // $hasTaintFlow + } + { + // "org.springframework.web.util;WebUtils;false;parseMatrixVariables;;;Argument[0];MapKey of ReturnValue;taint" + MultiValueMap out = null; + String in = (String)source(); + out = WebUtils.parseMatrixVariables(in); + sink(getMapKey(out)); // $hasTaintFlow + } + { + // "org.springframework.web.util;WebUtils;false;parseMatrixVariables;;;Argument[0];MapValue of ReturnValue;taint" + MultiValueMap out = null; + String in = (String)source(); + out = WebUtils.parseMatrixVariables(in); + sink(getMapValue(out)); // $hasTaintFlow + } + { + // "org.springframework.web.util;HtmlUtils;false;htmlEscape;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = HtmlUtils.htmlEscape(in, null); + sink(out); // $ hasTaintFlow + } + { + // "org.springframework.web.util;HtmlUtils;false;htmlEscape;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = HtmlUtils.htmlEscape(in); + sink(out); // $ hasTaintFlow + } + { + // "org.springframework.web.util;HtmlUtils;false;htmlEscapeDecimal;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = HtmlUtils.htmlEscapeDecimal(in, null); + sink(out); // $ hasTaintFlow + } + { + // "org.springframework.web.util;HtmlUtils;false;htmlEscapeDecimal;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = HtmlUtils.htmlEscapeDecimal(in); + sink(out); // $ hasTaintFlow + } + { + // "org.springframework.web.util;HtmlUtils;false;htmlEscapeHex;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = HtmlUtils.htmlEscapeHex(in, null); + sink(out); // $ hasTaintFlow + } + { + // "org.springframework.web.util;HtmlUtils;false;htmlEscapeHex;;;Argument[0];ReturnValue;taint" + String out = null; + String in = (String)source(); + out = HtmlUtils.htmlEscapeHex(in); + sink(out); // $ hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;normalize;;;Argument[-1];ReturnValue;taint" + UriComponents out = null; + UriComponents in = (UriComponents)source(); + out = in.normalize(); + sink(out); // $ hasTaintFlow + } + { + // "org.springframework.web.util;UriComponents;false;toString;;;Argument[-1];ReturnValue;taint" + String out = null; + UriComponents in = (UriComponents)source(); + out = in.toString(); + sink(out); // $ hasTaintFlow + } + { + // "org.springframework.web.util;UriTemplate;false;toString;;;Argument[-1];ReturnValue;taint" + String out = null; + UriTemplate in = (UriTemplate)source(); + out = in.toString(); + sink(out); // $ hasTaintFlow + } + { + // "org.springframework.web.util;UrlPathHelper;false;getPathWithinApplication;;;Argument[0];ReturnValue;taint" + String out = null; + HttpServletRequest in = (HttpServletRequest)source(); + UrlPathHelper instance = null; + out = instance.getPathWithinApplication(in); + sink(out); // $ hasTaintFlow + } + { + // "org.springframework.web.util;UrlPathHelper;false;getPathWithinServletMapping;;;Argument[0];ReturnValue;taint" + String out = null; + HttpServletRequest in = (HttpServletRequest)source(); + UrlPathHelper instance = null; + out = instance.getPathWithinServletMapping(in); + sink(out); // $ hasTaintFlow + } + { + // "org.springframework.web.util;WebUtils;false;setSessionAttribute;;;Argument[2];Argument[0];taint" + HttpServletRequest out = null; + Object in = (Object)source(); + WebUtils.setSessionAttribute(out, null, in); + sink(out); // $ hasTaintFlow + } + + } + +} diff --git a/java/ql/test/library-tests/frameworks/spring/webutil/options b/java/ql/test/library-tests/frameworks/spring/webutil/options new file mode 100644 index 000000000000..6dc26155d1d9 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/spring/webutil/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/springframework-5.3.8:${testdir}/../../../../stubs/javax-servlet-2.5:${testdir}/../../../../stubs/apache-commons-logging-1.2 diff --git a/java/ql/test/library-tests/frameworks/spring/webutil/test.expected b/java/ql/test/library-tests/frameworks/spring/webutil/test.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/java/ql/test/library-tests/frameworks/spring/webutil/test.ql b/java/ql/test/library-tests/frameworks/spring/webutil/test.ql new file mode 100644 index 000000000000..6158159e1e5b --- /dev/null +++ b/java/ql/test/library-tests/frameworks/spring/webutil/test.ql @@ -0,0 +1,52 @@ +import java +import semmle.code.java.dataflow.DataFlow +import semmle.code.java.dataflow.TaintTracking +import TestUtilities.InlineExpectationsTest + +class ValueFlowConf extends DataFlow::Configuration { + ValueFlowConf() { this = "qltest:valueFlowConf" } + + override predicate isSource(DataFlow::Node n) { + n.asExpr().(MethodAccess).getMethod().hasName("source") + } + + override predicate isSink(DataFlow::Node n) { + n.asExpr().(Argument).getCall().getCallee().hasName("sink") + } +} + +class TaintFlowConf extends TaintTracking::Configuration { + TaintFlowConf() { this = "qltest:taintFlowConf" } + + override predicate isSource(DataFlow::Node n) { + n.asExpr().(MethodAccess).getMethod().hasName("source") + } + + override predicate isSink(DataFlow::Node n) { + n.asExpr().(Argument).getCall().getCallee().hasName("sink") + } +} + +class HasFlowTest extends InlineExpectationsTest { + HasFlowTest() { this = "HasFlowTest" } + + override string getARelevantTag() { result = ["hasValueFlow", "hasTaintFlow"] } + + override predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "hasValueFlow" and + exists(DataFlow::Node src, DataFlow::Node sink, ValueFlowConf conf | conf.hasFlow(src, sink) | + sink.getLocation() = location and + element = sink.toString() and + value = "" + ) + or + tag = "hasTaintFlow" and + exists(DataFlow::Node src, DataFlow::Node sink, TaintFlowConf conf | + conf.hasFlow(src, sink) and not any(ValueFlowConf c).hasFlow(src, sink) + | + sink.getLocation() = location and + element = sink.toString() and + value = "" + ) + } +} diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/SpringXSS.java b/java/ql/test/query-tests/security/CWE-079/semmle/tests/SpringXSS.java index 959125caa4c6..744fe853b67a 100644 --- a/java/ql/test/query-tests/security/CWE-079/semmle/tests/SpringXSS.java +++ b/java/ql/test/query-tests/security/CWE-079/semmle/tests/SpringXSS.java @@ -5,6 +5,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.util.HtmlUtils; import java.util.Optional; @@ -157,4 +158,9 @@ public static String stringWithNoMediaType(String userControlled) { return userControlled; // $xss } -} \ No newline at end of file + @GetMapping(value = "/abc") + public static String sanitizedString(String userControlled) { + return HtmlUtils.htmlEscape(userControlled); + } + +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/AsyncContext.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/AsyncContext.java new file mode 100644 index 000000000000..1f50fb06303f --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/AsyncContext.java @@ -0,0 +1,31 @@ +// Generated automatically from javax.servlet.AsyncContext for testing purposes + +package javax.servlet; + +import javax.servlet.AsyncListener; +import javax.servlet.ServletContext; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public interface AsyncContext +{ + T createListener(Class p0); + ServletRequest getRequest(); + ServletResponse getResponse(); + boolean hasOriginalRequestAndResponse(); + long getTimeout(); + static String ASYNC_CONTEXT_PATH = null; + static String ASYNC_MAPPING = null; + static String ASYNC_PATH_INFO = null; + static String ASYNC_QUERY_STRING = null; + static String ASYNC_REQUEST_URI = null; + static String ASYNC_SERVLET_PATH = null; + void addListener(AsyncListener p0); + void addListener(AsyncListener p0, ServletRequest p1, ServletResponse p2); + void complete(); + void dispatch(); + void dispatch(ServletContext p0, String p1); + void dispatch(String p0); + void setTimeout(long p0); + void start(Runnable p0); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/AsyncEvent.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/AsyncEvent.java new file mode 100644 index 000000000000..d7cb9c2b175a --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/AsyncEvent.java @@ -0,0 +1,20 @@ +// Generated automatically from javax.servlet.AsyncEvent for testing purposes + +package javax.servlet; + +import javax.servlet.AsyncContext; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public class AsyncEvent +{ + protected AsyncEvent() {} + public AsyncContext getAsyncContext(){ return null; } + public AsyncEvent(AsyncContext p0){} + public AsyncEvent(AsyncContext p0, ServletRequest p1, ServletResponse p2){} + public AsyncEvent(AsyncContext p0, ServletRequest p1, ServletResponse p2, Throwable p3){} + public AsyncEvent(AsyncContext p0, Throwable p1){} + public ServletRequest getSuppliedRequest(){ return null; } + public ServletResponse getSuppliedResponse(){ return null; } + public Throwable getThrowable(){ return null; } +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/AsyncListener.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/AsyncListener.java new file mode 100644 index 000000000000..2723482f6683 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/AsyncListener.java @@ -0,0 +1,14 @@ +// Generated automatically from javax.servlet.AsyncListener for testing purposes + +package javax.servlet; + +import java.util.EventListener; +import javax.servlet.AsyncEvent; + +public interface AsyncListener extends EventListener +{ + void onComplete(AsyncEvent p0); + void onError(AsyncEvent p0); + void onStartAsync(AsyncEvent p0); + void onTimeout(AsyncEvent p0); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/DispatcherType.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/DispatcherType.java new file mode 100644 index 000000000000..2b7b44f328d6 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/DispatcherType.java @@ -0,0 +1,10 @@ +// Generated automatically from javax.servlet.DispatcherType for testing purposes + +package javax.servlet; + + +public enum DispatcherType +{ + ASYNC, ERROR, FORWARD, INCLUDE, REQUEST; + private DispatcherType() {} +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/Filter.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/Filter.java new file mode 100644 index 000000000000..64b9f9d73a89 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/Filter.java @@ -0,0 +1,15 @@ +// Generated automatically from javax.servlet.Filter for testing purposes + +package javax.servlet; + +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public interface Filter +{ + default void destroy(){} + default void init(FilterConfig p0){} + void doFilter(ServletRequest p0, ServletResponse p1, FilterChain p2); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/FilterChain.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/FilterChain.java new file mode 100644 index 000000000000..f64ab7226841 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/FilterChain.java @@ -0,0 +1,11 @@ +// Generated automatically from javax.servlet.FilterChain for testing purposes + +package javax.servlet; + +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public interface FilterChain +{ + void doFilter(ServletRequest p0, ServletResponse p1); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/FilterConfig.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/FilterConfig.java new file mode 100644 index 000000000000..0e140c6680c9 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/FilterConfig.java @@ -0,0 +1,14 @@ +// Generated automatically from javax.servlet.FilterConfig for testing purposes + +package javax.servlet; + +import java.util.Enumeration; +import javax.servlet.ServletContext; + +public interface FilterConfig +{ + Enumeration getInitParameterNames(); + ServletContext getServletContext(); + String getFilterName(); + String getInitParameter(String p0); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/FilterRegistration.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/FilterRegistration.java new file mode 100644 index 000000000000..6ad0739ceb6b --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/FilterRegistration.java @@ -0,0 +1,19 @@ +// Generated automatically from javax.servlet.FilterRegistration for testing purposes + +package javax.servlet; + +import java.util.Collection; +import java.util.EnumSet; +import javax.servlet.DispatcherType; +import javax.servlet.Registration; + +public interface FilterRegistration extends Registration +{ + Collection getServletNameMappings(); + Collection getUrlPatternMappings(); + static public interface Dynamic extends FilterRegistration, Registration.Dynamic + { + } + void addMappingForServletNames(EnumSet p0, boolean p1, String... p2); + void addMappingForUrlPatterns(EnumSet p0, boolean p1, String... p2); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/HttpConstraintElement.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/HttpConstraintElement.java new file mode 100644 index 000000000000..6598aa47cc5b --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/HttpConstraintElement.java @@ -0,0 +1,16 @@ +// Generated automatically from javax.servlet.HttpConstraintElement for testing purposes + +package javax.servlet; + +import javax.servlet.annotation.ServletSecurity; + +public class HttpConstraintElement +{ + public HttpConstraintElement(){} + public HttpConstraintElement(ServletSecurity.EmptyRoleSemantic p0){} + public HttpConstraintElement(ServletSecurity.EmptyRoleSemantic p0, ServletSecurity.TransportGuarantee p1, String... p2){} + public HttpConstraintElement(ServletSecurity.TransportGuarantee p0, String... p1){} + public ServletSecurity.EmptyRoleSemantic getEmptyRoleSemantic(){ return null; } + public ServletSecurity.TransportGuarantee getTransportGuarantee(){ return null; } + public String[] getRolesAllowed(){ return null; } +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/HttpMethodConstraintElement.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/HttpMethodConstraintElement.java new file mode 100644 index 000000000000..ddb525270045 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/HttpMethodConstraintElement.java @@ -0,0 +1,13 @@ +// Generated automatically from javax.servlet.HttpMethodConstraintElement for testing purposes + +package javax.servlet; + +import javax.servlet.HttpConstraintElement; + +public class HttpMethodConstraintElement extends HttpConstraintElement +{ + protected HttpMethodConstraintElement() {} + public HttpMethodConstraintElement(String p0){} + public HttpMethodConstraintElement(String p0, HttpConstraintElement p1){} + public String getMethodName(){ return null; } +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/MultipartConfigElement.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/MultipartConfigElement.java new file mode 100644 index 000000000000..8470d9a5317f --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/MultipartConfigElement.java @@ -0,0 +1,17 @@ +// Generated automatically from javax.servlet.MultipartConfigElement for testing purposes + +package javax.servlet; + +import javax.servlet.annotation.MultipartConfig; + +public class MultipartConfigElement +{ + protected MultipartConfigElement() {} + public MultipartConfigElement(MultipartConfig p0){} + public MultipartConfigElement(String p0){} + public MultipartConfigElement(String p0, long p1, long p2, int p3){} + public String getLocation(){ return null; } + public int getFileSizeThreshold(){ return 0; } + public long getMaxFileSize(){ return 0; } + public long getMaxRequestSize(){ return 0; } +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ReadListener.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ReadListener.java new file mode 100644 index 000000000000..367594ef7da6 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ReadListener.java @@ -0,0 +1,12 @@ +// Generated automatically from javax.servlet.ReadListener for testing purposes + +package javax.servlet; + +import java.util.EventListener; + +public interface ReadListener extends EventListener +{ + void onAllDataRead(); + void onDataAvailable(); + void onError(Throwable p0); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/Registration.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/Registration.java new file mode 100644 index 000000000000..5d4095813ef6 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/Registration.java @@ -0,0 +1,20 @@ +// Generated automatically from javax.servlet.Registration for testing purposes + +package javax.servlet; + +import java.util.Map; +import java.util.Set; + +public interface Registration +{ + Map getInitParameters(); + Set setInitParameters(Map p0); + String getClassName(); + String getInitParameter(String p0); + String getName(); + boolean setInitParameter(String p0, String p1); + static public interface Dynamic extends Registration + { + void setAsyncSupported(boolean p0); + } +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/RequestDispatcher.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/RequestDispatcher.java index 287dc4452a85..ad017e4f5015 100644 --- a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/RequestDispatcher.java +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/RequestDispatcher.java @@ -7,6 +7,24 @@ public interface RequestDispatcher { + static String ERROR_EXCEPTION = null; + static String ERROR_EXCEPTION_TYPE = null; + static String ERROR_MESSAGE = null; + static String ERROR_REQUEST_URI = null; + static String ERROR_SERVLET_NAME = null; + static String ERROR_STATUS_CODE = null; + static String FORWARD_CONTEXT_PATH = null; + static String FORWARD_MAPPING = null; + static String FORWARD_PATH_INFO = null; + static String FORWARD_QUERY_STRING = null; + static String FORWARD_REQUEST_URI = null; + static String FORWARD_SERVLET_PATH = null; + static String INCLUDE_CONTEXT_PATH = null; + static String INCLUDE_MAPPING = null; + static String INCLUDE_PATH_INFO = null; + static String INCLUDE_QUERY_STRING = null; + static String INCLUDE_REQUEST_URI = null; + static String INCLUDE_SERVLET_PATH = null; void forward(ServletRequest p0, ServletResponse p1); void include(ServletRequest p0, ServletResponse p1); } diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletConfig.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletConfig.java index 09d75acb2681..c483c16ac4e8 100644 --- a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletConfig.java +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletConfig.java @@ -7,7 +7,7 @@ public interface ServletConfig { - Enumeration getInitParameterNames(); + Enumeration getInitParameterNames(); ServletContext getServletContext(); String getInitParameter(String p0); String getServletName(); diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletContext.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletContext.java index c9c3cc1112f1..5ce42a402825 100644 --- a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletContext.java +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletContext.java @@ -5,35 +5,79 @@ import java.io.InputStream; import java.net.URL; import java.util.Enumeration; +import java.util.EventListener; +import java.util.Map; import java.util.Set; +import javax.servlet.Filter; +import javax.servlet.FilterRegistration; import javax.servlet.RequestDispatcher; import javax.servlet.Servlet; +import javax.servlet.ServletRegistration; +import javax.servlet.SessionCookieConfig; +import javax.servlet.SessionTrackingMode; +import javax.servlet.descriptor.JspConfigDescriptor; public interface ServletContext { - Enumeration getAttributeNames(); - Enumeration getInitParameterNames(); - Enumeration getServletNames(); - Enumeration getServlets(); + T createListener(Class p0); + void addListener(T p0); + T createFilter(Class p0); + T createServlet(Class p0); + ClassLoader getClassLoader(); + Enumeration getServlets(); + Enumeration getAttributeNames(); + Enumeration getInitParameterNames(); + Enumeration getServletNames(); + FilterRegistration getFilterRegistration(String p0); + FilterRegistration.Dynamic addFilter(String p0, Class p1); + FilterRegistration.Dynamic addFilter(String p0, Filter p1); + FilterRegistration.Dynamic addFilter(String p0, String p1); InputStream getResourceAsStream(String p0); + JspConfigDescriptor getJspConfigDescriptor(); + Map getFilterRegistrations(); + Map getServletRegistrations(); Object getAttribute(String p0); RequestDispatcher getNamedDispatcher(String p0); RequestDispatcher getRequestDispatcher(String p0); Servlet getServlet(String p0); ServletContext getContext(String p0); - Set getResourcePaths(String p0); + ServletRegistration getServletRegistration(String p0); + ServletRegistration.Dynamic addJspFile(String p0, String p1); + ServletRegistration.Dynamic addServlet(String p0, Class p1); + ServletRegistration.Dynamic addServlet(String p0, Servlet p1); + ServletRegistration.Dynamic addServlet(String p0, String p1); + SessionCookieConfig getSessionCookieConfig(); + Set getDefaultSessionTrackingModes(); + Set getEffectiveSessionTrackingModes(); + Set getResourcePaths(String p0); String getContextPath(); String getInitParameter(String p0); String getMimeType(String p0); String getRealPath(String p0); + String getRequestCharacterEncoding(); + String getResponseCharacterEncoding(); String getServerInfo(); String getServletContextName(); + String getVirtualServerName(); URL getResource(String p0); + boolean setInitParameter(String p0, String p1); + int getEffectiveMajorVersion(); + int getEffectiveMinorVersion(); int getMajorVersion(); int getMinorVersion(); + int getSessionTimeout(); + static String ORDERED_LIBS = null; + static String TEMPDIR = null; + void addListener(Class p0); + void addListener(String p0); + void declareRoles(String... p0); void log(Exception p0, String p1); void log(String p0); void log(String p0, Throwable p1); void removeAttribute(String p0); void setAttribute(String p0, Object p1); + void setRequestCharacterEncoding(String p0); + void setResponseCharacterEncoding(String p0); + void setSessionTimeout(int p0); + void setSessionTrackingModes(Set p0); } diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletInputStream.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletInputStream.java index ddaf28ba36a4..31034066970c 100644 --- a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletInputStream.java +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletInputStream.java @@ -3,9 +3,13 @@ package javax.servlet; import java.io.InputStream; +import javax.servlet.ReadListener; abstract public class ServletInputStream extends InputStream { protected ServletInputStream(){} + public abstract boolean isFinished(); + public abstract boolean isReady(); + public abstract void setReadListener(ReadListener p0); public int readLine(byte[] p0, int p1, int p2){ return 0; } } diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletOutputStream.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletOutputStream.java index 18f93cc0ec32..52a2162c9eb3 100644 --- a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletOutputStream.java +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletOutputStream.java @@ -3,10 +3,13 @@ package javax.servlet; import java.io.OutputStream; +import javax.servlet.WriteListener; abstract public class ServletOutputStream extends OutputStream { protected ServletOutputStream(){} + public abstract boolean isReady(); + public abstract void setWriteListener(WriteListener p0); public void print(String p0){} public void print(boolean p0){} public void print(char p0){} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletRegistration.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletRegistration.java new file mode 100644 index 000000000000..a1cc66f2d190 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletRegistration.java @@ -0,0 +1,23 @@ +// Generated automatically from javax.servlet.ServletRegistration for testing purposes + +package javax.servlet; + +import java.util.Collection; +import java.util.Set; +import javax.servlet.MultipartConfigElement; +import javax.servlet.Registration; +import javax.servlet.ServletSecurityElement; + +public interface ServletRegistration extends Registration +{ + Collection getMappings(); + Set addMapping(String... p0); + String getRunAsRole(); + static public interface Dynamic extends Registration.Dynamic, ServletRegistration + { + Set setServletSecurity(ServletSecurityElement p0); + void setLoadOnStartup(int p0); + void setMultipartConfig(MultipartConfigElement p0); + void setRunAsRole(String p0); + } +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletRequest.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletRequest.java index d4f4343b70c4..fc0db462cc00 100644 --- a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletRequest.java +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletRequest.java @@ -6,19 +6,28 @@ import java.util.Enumeration; import java.util.Locale; import java.util.Map; +import javax.servlet.AsyncContext; +import javax.servlet.DispatcherType; import javax.servlet.RequestDispatcher; +import javax.servlet.ServletContext; import javax.servlet.ServletInputStream; +import javax.servlet.ServletResponse; public interface ServletRequest { + AsyncContext getAsyncContext(); + AsyncContext startAsync(); + AsyncContext startAsync(ServletRequest p0, ServletResponse p1); BufferedReader getReader(); - Enumeration getAttributeNames(); - Enumeration getLocales(); - Enumeration getParameterNames(); + DispatcherType getDispatcherType(); + Enumeration getLocales(); + Enumeration getAttributeNames(); + Enumeration getParameterNames(); Locale getLocale(); - Map getParameterMap(); + Map getParameterMap(); Object getAttribute(String p0); RequestDispatcher getRequestDispatcher(String p0); + ServletContext getServletContext(); ServletInputStream getInputStream(); String getCharacterEncoding(); String getContentType(); @@ -32,11 +41,14 @@ public interface ServletRequest String getScheme(); String getServerName(); String[] getParameterValues(String p0); + boolean isAsyncStarted(); + boolean isAsyncSupported(); boolean isSecure(); int getContentLength(); int getLocalPort(); int getRemotePort(); int getServerPort(); + long getContentLengthLong(); void removeAttribute(String p0); void setAttribute(String p0, Object p1); void setCharacterEncoding(String p0); diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletRequestWrapper.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletRequestWrapper.java new file mode 100644 index 000000000000..df7c719c44a0 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletRequestWrapper.java @@ -0,0 +1,62 @@ +// Generated automatically from javax.servlet.ServletRequestWrapper for testing purposes + +package javax.servlet; + +import java.io.BufferedReader; +import java.util.Enumeration; +import java.util.Locale; +import java.util.Map; +import javax.servlet.AsyncContext; +import javax.servlet.DispatcherType; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletContext; +import javax.servlet.ServletInputStream; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public class ServletRequestWrapper implements ServletRequest +{ + protected ServletRequestWrapper() {} + public AsyncContext getAsyncContext(){ return null; } + public AsyncContext startAsync(){ return null; } + public AsyncContext startAsync(ServletRequest p0, ServletResponse p1){ return null; } + public BufferedReader getReader(){ return null; } + public DispatcherType getDispatcherType(){ return null; } + public Enumeration getLocales(){ return null; } + public Enumeration getAttributeNames(){ return null; } + public Enumeration getParameterNames(){ return null; } + public Locale getLocale(){ return null; } + public Map getParameterMap(){ return null; } + public Object getAttribute(String p0){ return null; } + public RequestDispatcher getRequestDispatcher(String p0){ return null; } + public ServletContext getServletContext(){ return null; } + public ServletInputStream getInputStream(){ return null; } + public ServletRequest getRequest(){ return null; } + public ServletRequestWrapper(ServletRequest p0){} + public String getCharacterEncoding(){ return null; } + public String getContentType(){ return null; } + public String getLocalAddr(){ return null; } + public String getLocalName(){ return null; } + public String getParameter(String p0){ return null; } + public String getProtocol(){ return null; } + public String getRealPath(String p0){ return null; } + public String getRemoteAddr(){ return null; } + public String getRemoteHost(){ return null; } + public String getScheme(){ return null; } + public String getServerName(){ return null; } + public String[] getParameterValues(String p0){ return null; } + public boolean isAsyncStarted(){ return false; } + public boolean isAsyncSupported(){ return false; } + public boolean isSecure(){ return false; } + public boolean isWrapperFor(Class p0){ return false; } + public boolean isWrapperFor(ServletRequest p0){ return false; } + public int getContentLength(){ return 0; } + public int getLocalPort(){ return 0; } + public int getRemotePort(){ return 0; } + public int getServerPort(){ return 0; } + public long getContentLengthLong(){ return 0; } + public void removeAttribute(String p0){} + public void setAttribute(String p0, Object p1){} + public void setCharacterEncoding(String p0){} + public void setRequest(ServletRequest p0){} +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletResponse.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletResponse.java index 38659f145163..db6610bc15d2 100644 --- a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletResponse.java +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletResponse.java @@ -21,6 +21,7 @@ public interface ServletResponse void setBufferSize(int p0); void setCharacterEncoding(String p0); void setContentLength(int p0); + void setContentLengthLong(long p0); void setContentType(String p0); void setLocale(Locale p0); } diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletResponseWrapper.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletResponseWrapper.java new file mode 100644 index 000000000000..c8105f36ce9a --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletResponseWrapper.java @@ -0,0 +1,34 @@ +// Generated automatically from javax.servlet.ServletResponseWrapper for testing purposes + +package javax.servlet; + +import java.io.PrintWriter; +import java.util.Locale; +import javax.servlet.ServletOutputStream; +import javax.servlet.ServletResponse; + +public class ServletResponseWrapper implements ServletResponse +{ + protected ServletResponseWrapper() {} + public Locale getLocale(){ return null; } + public PrintWriter getWriter(){ return null; } + public ServletOutputStream getOutputStream(){ return null; } + public ServletResponse getResponse(){ return null; } + public ServletResponseWrapper(ServletResponse p0){} + public String getCharacterEncoding(){ return null; } + public String getContentType(){ return null; } + public boolean isCommitted(){ return false; } + public boolean isWrapperFor(Class p0){ return false; } + public boolean isWrapperFor(ServletResponse p0){ return false; } + public int getBufferSize(){ return 0; } + public void flushBuffer(){} + public void reset(){} + public void resetBuffer(){} + public void setBufferSize(int p0){} + public void setCharacterEncoding(String p0){} + public void setContentLength(int p0){} + public void setContentLengthLong(long p0){} + public void setContentType(String p0){} + public void setLocale(Locale p0){} + public void setResponse(ServletResponse p0){} +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletSecurityElement.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletSecurityElement.java new file mode 100644 index 000000000000..def47937391b --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/ServletSecurityElement.java @@ -0,0 +1,19 @@ +// Generated automatically from javax.servlet.ServletSecurityElement for testing purposes + +package javax.servlet; + +import java.util.Collection; +import javax.servlet.HttpConstraintElement; +import javax.servlet.HttpMethodConstraintElement; +import javax.servlet.annotation.ServletSecurity; + +public class ServletSecurityElement extends HttpConstraintElement +{ + public Collection getHttpMethodConstraints(){ return null; } + public Collection getMethodNames(){ return null; } + public ServletSecurityElement(){} + public ServletSecurityElement(Collection p0){} + public ServletSecurityElement(HttpConstraintElement p0){} + public ServletSecurityElement(HttpConstraintElement p0, Collection p1){} + public ServletSecurityElement(ServletSecurity p0){} +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/SessionCookieConfig.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/SessionCookieConfig.java new file mode 100644 index 000000000000..4cae9a11f305 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/SessionCookieConfig.java @@ -0,0 +1,22 @@ +// Generated automatically from javax.servlet.SessionCookieConfig for testing purposes + +package javax.servlet; + + +public interface SessionCookieConfig +{ + String getComment(); + String getDomain(); + String getName(); + String getPath(); + boolean isHttpOnly(); + boolean isSecure(); + int getMaxAge(); + void setComment(String p0); + void setDomain(String p0); + void setHttpOnly(boolean p0); + void setMaxAge(int p0); + void setName(String p0); + void setPath(String p0); + void setSecure(boolean p0); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/SessionTrackingMode.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/SessionTrackingMode.java new file mode 100644 index 000000000000..684ac40c56fb --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/SessionTrackingMode.java @@ -0,0 +1,10 @@ +// Generated automatically from javax.servlet.SessionTrackingMode for testing purposes + +package javax.servlet; + + +public enum SessionTrackingMode +{ + COOKIE, SSL, URL; + private SessionTrackingMode() {} +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/WriteListener.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/WriteListener.java new file mode 100644 index 000000000000..24fe504271c6 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/WriteListener.java @@ -0,0 +1,11 @@ +// Generated automatically from javax.servlet.WriteListener for testing purposes + +package javax.servlet; + +import java.util.EventListener; + +public interface WriteListener extends EventListener +{ + void onError(Throwable p0); + void onWritePossible(); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/annotation/HttpConstraint.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/annotation/HttpConstraint.java new file mode 100644 index 000000000000..ef2a244342c9 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/annotation/HttpConstraint.java @@ -0,0 +1,13 @@ +// Generated automatically from javax.servlet.annotation.HttpConstraint for testing purposes + +package javax.servlet.annotation; + +import java.lang.annotation.Annotation; +import javax.servlet.annotation.ServletSecurity; + +public interface HttpConstraint extends Annotation +{ + ServletSecurity.EmptyRoleSemantic value(); + ServletSecurity.TransportGuarantee transportGuarantee(); + String[] rolesAllowed(); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/annotation/MultipartConfig.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/annotation/MultipartConfig.java new file mode 100644 index 000000000000..6b41173f6fa3 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/annotation/MultipartConfig.java @@ -0,0 +1,13 @@ +// Generated automatically from javax.servlet.annotation.MultipartConfig for testing purposes + +package javax.servlet.annotation; + +import java.lang.annotation.Annotation; + +public interface MultipartConfig extends Annotation +{ + String location(); + int fileSizeThreshold(); + long maxFileSize(); + long maxRequestSize(); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/annotation/ServletSecurity.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/annotation/ServletSecurity.java new file mode 100644 index 000000000000..34e181ad6da8 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/annotation/ServletSecurity.java @@ -0,0 +1,21 @@ +// Generated automatically from javax.servlet.annotation.ServletSecurity for testing purposes + +package javax.servlet.annotation; + +import java.lang.annotation.Annotation; +import javax.servlet.annotation.HttpConstraint; + +public interface ServletSecurity extends Annotation +{ + HttpConstraint value(); + static public enum EmptyRoleSemantic + { + DENY, PERMIT; + private EmptyRoleSemantic() {} + } + static public enum TransportGuarantee + { + CONFIDENTIAL, NONE; + private TransportGuarantee() {} + } +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/descriptor/JspConfigDescriptor.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/descriptor/JspConfigDescriptor.java new file mode 100644 index 000000000000..8d93a4318d7e --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/descriptor/JspConfigDescriptor.java @@ -0,0 +1,13 @@ +// Generated automatically from javax.servlet.descriptor.JspConfigDescriptor for testing purposes + +package javax.servlet.descriptor; + +import java.util.Collection; +import javax.servlet.descriptor.JspPropertyGroupDescriptor; +import javax.servlet.descriptor.TaglibDescriptor; + +public interface JspConfigDescriptor +{ + Collection getJspPropertyGroups(); + Collection getTaglibs(); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/descriptor/JspPropertyGroupDescriptor.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/descriptor/JspPropertyGroupDescriptor.java new file mode 100644 index 000000000000..dd852fa10883 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/descriptor/JspPropertyGroupDescriptor.java @@ -0,0 +1,21 @@ +// Generated automatically from javax.servlet.descriptor.JspPropertyGroupDescriptor for testing purposes + +package javax.servlet.descriptor; + +import java.util.Collection; + +public interface JspPropertyGroupDescriptor +{ + Collection getIncludeCodas(); + Collection getIncludePreludes(); + Collection getUrlPatterns(); + String getBuffer(); + String getDefaultContentType(); + String getDeferredSyntaxAllowedAsLiteral(); + String getElIgnored(); + String getErrorOnUndeclaredNamespace(); + String getIsXml(); + String getPageEncoding(); + String getScriptingInvalid(); + String getTrimDirectiveWhitespaces(); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/descriptor/TaglibDescriptor.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/descriptor/TaglibDescriptor.java new file mode 100644 index 000000000000..c3dd5c10473d --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/descriptor/TaglibDescriptor.java @@ -0,0 +1,10 @@ +// Generated automatically from javax.servlet.descriptor.TaglibDescriptor for testing purposes + +package javax.servlet.descriptor; + + +public interface TaglibDescriptor +{ + String getTaglibLocation(); + String getTaglibURI(); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/Cookie.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/Cookie.java index 2033a9fd936d..b5a180029be6 100644 --- a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/Cookie.java +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/Cookie.java @@ -2,8 +2,9 @@ package javax.servlet.http; +import java.io.Serializable; -public class Cookie implements Cloneable +public class Cookie implements Cloneable, Serializable { protected Cookie() {} public Cookie(String p0, String p1){} @@ -14,10 +15,12 @@ public Cookie(String p0, String p1){} public String getPath(){ return null; } public String getValue(){ return null; } public boolean getSecure(){ return false; } + public boolean isHttpOnly(){ return false; } public int getMaxAge(){ return 0; } public int getVersion(){ return 0; } public void setComment(String p0){} public void setDomain(String p0){} + public void setHttpOnly(boolean p0){} public void setMaxAge(int p0){} public void setPath(String p0){} public void setSecure(boolean p0){} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpServletMapping.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpServletMapping.java new file mode 100644 index 000000000000..1b597f277734 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpServletMapping.java @@ -0,0 +1,13 @@ +// Generated automatically from javax.servlet.http.HttpServletMapping for testing purposes + +package javax.servlet.http; + +import javax.servlet.http.MappingMatch; + +public interface HttpServletMapping +{ + MappingMatch getMappingMatch(); + String getMatchValue(); + String getPattern(); + String getServletName(); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpServletRequest.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpServletRequest.java index 53f6fc8a9db1..9667967473a7 100644 --- a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpServletRequest.java +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpServletRequest.java @@ -3,19 +3,28 @@ package javax.servlet.http; import java.security.Principal; +import java.util.Collection; import java.util.Enumeration; +import java.util.Map; import javax.servlet.ServletRequest; import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletMapping; +import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; +import javax.servlet.http.Part; +import javax.servlet.http.PushBuilder; public interface HttpServletRequest extends ServletRequest { + Collection getParts(); Cookie[] getCookies(); - Enumeration getHeaderNames(); - Enumeration getHeaders(String p0); + Enumeration getHeaderNames(); + Enumeration getHeaders(String p0); HttpSession getSession(); HttpSession getSession(boolean p0); + Part getPart(String p0); Principal getUserPrincipal(); + String changeSessionId(); String getAuthType(); String getContextPath(); String getHeader(String p0); @@ -28,15 +37,22 @@ public interface HttpServletRequest extends ServletRequest String getRequestedSessionId(); String getServletPath(); StringBuffer getRequestURL(); + boolean authenticate(HttpServletResponse p0); boolean isRequestedSessionIdFromCookie(); boolean isRequestedSessionIdFromURL(); boolean isRequestedSessionIdFromUrl(); boolean isRequestedSessionIdValid(); boolean isUserInRole(String p0); + default HttpServletMapping getHttpServletMapping(){ return null; } + default Map getTrailerFields(){ return null; } + default PushBuilder newPushBuilder(){ return null; } + default boolean isTrailerFieldsReady(){ return false; } int getIntHeader(String p0); long getDateHeader(String p0); static String BASIC_AUTH = null; static String CLIENT_CERT_AUTH = null; static String DIGEST_AUTH = null; static String FORM_AUTH = null; + void login(String p0, String p1); + void logout(); } diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpServletRequestWrapper.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpServletRequestWrapper.java new file mode 100644 index 000000000000..17ade0faf3a4 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpServletRequestWrapper.java @@ -0,0 +1,57 @@ +// Generated automatically from javax.servlet.http.HttpServletRequestWrapper for testing purposes + +package javax.servlet.http; + +import java.security.Principal; +import java.util.Collection; +import java.util.Enumeration; +import java.util.Map; +import javax.servlet.ServletRequestWrapper; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletMapping; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import javax.servlet.http.Part; +import javax.servlet.http.PushBuilder; + +public class HttpServletRequestWrapper extends ServletRequestWrapper implements HttpServletRequest +{ + protected HttpServletRequestWrapper() {} + public Collection getParts(){ return null; } + public Cookie[] getCookies(){ return null; } + public Enumeration getHeaderNames(){ return null; } + public Enumeration getHeaders(String p0){ return null; } + public HttpServletMapping getHttpServletMapping(){ return null; } + public HttpServletRequestWrapper(HttpServletRequest p0){} + public HttpSession getSession(){ return null; } + public HttpSession getSession(boolean p0){ return null; } + public Map getTrailerFields(){ return null; } + public Part getPart(String p0){ return null; } + public Principal getUserPrincipal(){ return null; } + public PushBuilder newPushBuilder(){ return null; } + public String changeSessionId(){ return null; } + public String getAuthType(){ return null; } + public String getContextPath(){ return null; } + public String getHeader(String p0){ return null; } + public String getMethod(){ return null; } + public String getPathInfo(){ return null; } + public String getPathTranslated(){ return null; } + public String getQueryString(){ return null; } + public String getRemoteUser(){ return null; } + public String getRequestURI(){ return null; } + public String getRequestedSessionId(){ return null; } + public String getServletPath(){ return null; } + public StringBuffer getRequestURL(){ return null; } + public boolean authenticate(HttpServletResponse p0){ return false; } + public boolean isRequestedSessionIdFromCookie(){ return false; } + public boolean isRequestedSessionIdFromURL(){ return false; } + public boolean isRequestedSessionIdFromUrl(){ return false; } + public boolean isRequestedSessionIdValid(){ return false; } + public boolean isTrailerFieldsReady(){ return false; } + public boolean isUserInRole(String p0){ return false; } + public int getIntHeader(String p0){ return 0; } + public long getDateHeader(String p0){ return 0; } + public void login(String p0, String p1){} + public void logout(){} +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpServletResponse.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpServletResponse.java new file mode 100644 index 000000000000..da902dbf30cf --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpServletResponse.java @@ -0,0 +1,77 @@ +// Generated automatically from javax.servlet.http.HttpServletResponse for testing purposes + +package javax.servlet.http; + +import java.util.Collection; +import java.util.Map; +import java.util.function.Supplier; +import javax.servlet.ServletResponse; +import javax.servlet.http.Cookie; + +public interface HttpServletResponse extends ServletResponse +{ + Collection getHeaderNames(); + Collection getHeaders(String p0); + String encodeRedirectURL(String p0); + String encodeRedirectUrl(String p0); + String encodeURL(String p0); + String encodeUrl(String p0); + String getHeader(String p0); + boolean containsHeader(String p0); + default Supplier> getTrailerFields(){ return null; } + default void setTrailerFields(Supplier> p0){} + int getStatus(); + static int SC_ACCEPTED = 0; + static int SC_BAD_GATEWAY = 0; + static int SC_BAD_REQUEST = 0; + static int SC_CONFLICT = 0; + static int SC_CONTINUE = 0; + static int SC_CREATED = 0; + static int SC_EXPECTATION_FAILED = 0; + static int SC_FORBIDDEN = 0; + static int SC_FOUND = 0; + static int SC_GATEWAY_TIMEOUT = 0; + static int SC_GONE = 0; + static int SC_HTTP_VERSION_NOT_SUPPORTED = 0; + static int SC_INTERNAL_SERVER_ERROR = 0; + static int SC_LENGTH_REQUIRED = 0; + static int SC_METHOD_NOT_ALLOWED = 0; + static int SC_MOVED_PERMANENTLY = 0; + static int SC_MOVED_TEMPORARILY = 0; + static int SC_MULTIPLE_CHOICES = 0; + static int SC_NON_AUTHORITATIVE_INFORMATION = 0; + static int SC_NOT_ACCEPTABLE = 0; + static int SC_NOT_FOUND = 0; + static int SC_NOT_IMPLEMENTED = 0; + static int SC_NOT_MODIFIED = 0; + static int SC_NO_CONTENT = 0; + static int SC_OK = 0; + static int SC_PARTIAL_CONTENT = 0; + static int SC_PAYMENT_REQUIRED = 0; + static int SC_PRECONDITION_FAILED = 0; + static int SC_PROXY_AUTHENTICATION_REQUIRED = 0; + static int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 0; + static int SC_REQUEST_ENTITY_TOO_LARGE = 0; + static int SC_REQUEST_TIMEOUT = 0; + static int SC_REQUEST_URI_TOO_LONG = 0; + static int SC_RESET_CONTENT = 0; + static int SC_SEE_OTHER = 0; + static int SC_SERVICE_UNAVAILABLE = 0; + static int SC_SWITCHING_PROTOCOLS = 0; + static int SC_TEMPORARY_REDIRECT = 0; + static int SC_UNAUTHORIZED = 0; + static int SC_UNSUPPORTED_MEDIA_TYPE = 0; + static int SC_USE_PROXY = 0; + void addCookie(Cookie p0); + void addDateHeader(String p0, long p1); + void addHeader(String p0, String p1); + void addIntHeader(String p0, int p1); + void sendError(int p0); + void sendError(int p0, String p1); + void sendRedirect(String p0); + void setDateHeader(String p0, long p1); + void setHeader(String p0, String p1); + void setIntHeader(String p0, int p1); + void setStatus(int p0); + void setStatus(int p0, String p1); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpServletResponseWrapper.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpServletResponseWrapper.java new file mode 100644 index 000000000000..01f33f737947 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpServletResponseWrapper.java @@ -0,0 +1,39 @@ +// Generated automatically from javax.servlet.http.HttpServletResponseWrapper for testing purposes + +package javax.servlet.http; + +import java.util.Collection; +import java.util.Map; +import java.util.function.Supplier; +import javax.servlet.ServletResponseWrapper; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletResponse; + +public class HttpServletResponseWrapper extends ServletResponseWrapper implements HttpServletResponse +{ + protected HttpServletResponseWrapper() {} + public Collection getHeaderNames(){ return null; } + public Collection getHeaders(String p0){ return null; } + public HttpServletResponseWrapper(HttpServletResponse p0){} + public String encodeRedirectURL(String p0){ return null; } + public String encodeRedirectUrl(String p0){ return null; } + public String encodeURL(String p0){ return null; } + public String encodeUrl(String p0){ return null; } + public String getHeader(String p0){ return null; } + public Supplier> getTrailerFields(){ return null; } + public boolean containsHeader(String p0){ return false; } + public int getStatus(){ return 0; } + public void addCookie(Cookie p0){} + public void addDateHeader(String p0, long p1){} + public void addHeader(String p0, String p1){} + public void addIntHeader(String p0, int p1){} + public void sendError(int p0){} + public void sendError(int p0, String p1){} + public void sendRedirect(String p0){} + public void setDateHeader(String p0, long p1){} + public void setHeader(String p0, String p1){} + public void setIntHeader(String p0, int p1){} + public void setStatus(int p0){} + public void setStatus(int p0, String p1){} + public void setTrailerFields(Supplier> p0){} +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpSession.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpSession.java index c1153ae8aac4..f8f455b14231 100644 --- a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpSession.java +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpSession.java @@ -8,7 +8,7 @@ public interface HttpSession { - Enumeration getAttributeNames(); + Enumeration getAttributeNames(); HttpSessionContext getSessionContext(); Object getAttribute(String p0); Object getValue(String p0); diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpSessionContext.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpSessionContext.java index 321cd23e5be2..97a77b483588 100644 --- a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpSessionContext.java +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/HttpSessionContext.java @@ -7,6 +7,6 @@ public interface HttpSessionContext { - Enumeration getIds(); + Enumeration getIds(); HttpSession getSession(String p0); } diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/MappingMatch.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/MappingMatch.java new file mode 100644 index 000000000000..0432fd2ef7d3 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/MappingMatch.java @@ -0,0 +1,10 @@ +// Generated automatically from javax.servlet.http.MappingMatch for testing purposes + +package javax.servlet.http; + + +public enum MappingMatch +{ + CONTEXT_ROOT, DEFAULT, EXACT, EXTENSION, PATH; + private MappingMatch() {} +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/Part.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/Part.java new file mode 100644 index 000000000000..a4e599748a56 --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/Part.java @@ -0,0 +1,20 @@ +// Generated automatically from javax.servlet.http.Part for testing purposes + +package javax.servlet.http; + +import java.io.InputStream; +import java.util.Collection; + +public interface Part +{ + Collection getHeaderNames(); + Collection getHeaders(String p0); + InputStream getInputStream(); + String getContentType(); + String getHeader(String p0); + String getName(); + String getSubmittedFileName(); + long getSize(); + void delete(); + void write(String p0); +} diff --git a/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/PushBuilder.java b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/PushBuilder.java new file mode 100644 index 000000000000..195e2426a83c --- /dev/null +++ b/java/ql/test/stubs/javax-servlet-2.5/javax/servlet/http/PushBuilder.java @@ -0,0 +1,23 @@ +// Generated automatically from javax.servlet.http.PushBuilder for testing purposes + +package javax.servlet.http; + +import java.util.Set; + +public interface PushBuilder +{ + PushBuilder addHeader(String p0, String p1); + PushBuilder method(String p0); + PushBuilder path(String p0); + PushBuilder queryString(String p0); + PushBuilder removeHeader(String p0); + PushBuilder sessionId(String p0); + PushBuilder setHeader(String p0, String p1); + Set getHeaderNames(); + String getHeader(String p0); + String getMethod(); + String getPath(); + String getQueryString(); + String getSessionId(); + void push(); +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/http/HttpMessage.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/http/HttpMessage.java new file mode 100644 index 000000000000..a7a3645e0d41 --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/http/HttpMessage.java @@ -0,0 +1,10 @@ +// Generated automatically from org.springframework.http.HttpMessage for testing purposes + +package org.springframework.http; + +import org.springframework.http.HttpHeaders; + +public interface HttpMessage +{ + HttpHeaders getHeaders(); +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/http/HttpRequest.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/http/HttpRequest.java new file mode 100644 index 000000000000..f781391d9ca7 --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/http/HttpRequest.java @@ -0,0 +1,14 @@ +// Generated automatically from org.springframework.http.HttpRequest for testing purposes + +package org.springframework.http; + +import java.net.URI; +import org.springframework.http.HttpMessage; +import org.springframework.http.HttpMethod; + +public interface HttpRequest extends HttpMessage +{ + String getMethodValue(); + URI getURI(); + default HttpMethod getMethod(){ return null; } +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/http/server/PathContainer.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/http/server/PathContainer.java new file mode 100644 index 000000000000..fc2b6f0725fd --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/http/server/PathContainer.java @@ -0,0 +1,28 @@ +// Generated automatically from org.springframework.http.server.PathContainer for testing purposes + +package org.springframework.http.server; + +import java.util.List; + +public interface PathContainer +{ + List elements(); + String value(); + default PathContainer subPath(int p0){ return null; } + default PathContainer subPath(int p0, int p1){ return null; } + static PathContainer parsePath(String p0){ return null; } + static PathContainer parsePath(String p0, PathContainer.Options p1){ return null; } + static public class Options + { + protected Options() {} + public boolean shouldDecodeAndParseSegments(){ return false; } + public char separator(){ return '0'; } + public static PathContainer.Options HTTP_PATH = null; + public static PathContainer.Options MESSAGE_ROUTE = null; + public static PathContainer.Options create(char p0, boolean p1){ return null; } + } + static public interface Element + { + String value(); + } +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/http/server/RequestPath.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/http/server/RequestPath.java new file mode 100644 index 000000000000..7cae24a3ced4 --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/http/server/RequestPath.java @@ -0,0 +1,15 @@ +// Generated automatically from org.springframework.http.server.RequestPath for testing purposes + +package org.springframework.http.server; + +import java.net.URI; +import org.springframework.http.server.PathContainer; + +public interface RequestPath extends PathContainer +{ + PathContainer contextPath(); + PathContainer pathWithinApplication(); + RequestPath modifyContextPath(String p0); + static RequestPath parse(String p0, String p1){ return null; } + static RequestPath parse(URI p0, String p1){ return null; } +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/AbstractUriTemplateHandler.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/AbstractUriTemplateHandler.java new file mode 100644 index 000000000000..d4c1da33c56e --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/AbstractUriTemplateHandler.java @@ -0,0 +1,20 @@ +// Generated automatically from org.springframework.web.util.AbstractUriTemplateHandler for testing purposes + +package org.springframework.web.util; + +import java.net.URI; +import java.util.Map; +import org.springframework.web.util.UriTemplateHandler; + +abstract public class AbstractUriTemplateHandler implements UriTemplateHandler +{ + protected abstract URI expandInternal(String p0, Map p1); + protected abstract URI expandInternal(String p0, Object... p1); + public AbstractUriTemplateHandler(){} + public Map getDefaultUriVariables(){ return null; } + public String getBaseUrl(){ return null; } + public URI expand(String p0, Map p1){ return null; } + public URI expand(String p0, Object... p1){ return null; } + public void setBaseUrl(String p0){} + public void setDefaultUriVariables(Map p0){} +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/ContentCachingRequestWrapper.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/ContentCachingRequestWrapper.java new file mode 100644 index 000000000000..40ca55d7d0be --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/ContentCachingRequestWrapper.java @@ -0,0 +1,26 @@ +// Generated automatically from org.springframework.web.util.ContentCachingRequestWrapper for testing purposes + +package org.springframework.web.util; + +import java.io.BufferedReader; +import java.util.Enumeration; +import java.util.Map; +import javax.servlet.ServletInputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; + +public class ContentCachingRequestWrapper extends HttpServletRequestWrapper +{ + protected ContentCachingRequestWrapper() {} + protected void handleContentOverflow(int p0){} + public BufferedReader getReader(){ return null; } + public ContentCachingRequestWrapper(HttpServletRequest p0){} + public ContentCachingRequestWrapper(HttpServletRequest p0, int p1){} + public Enumeration getParameterNames(){ return null; } + public Map getParameterMap(){ return null; } + public ServletInputStream getInputStream(){ return null; } + public String getCharacterEncoding(){ return null; } + public String getParameter(String p0){ return null; } + public String[] getParameterValues(String p0){ return null; } + public byte[] getContentAsByteArray(){ return null; } +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/ContentCachingResponseWrapper.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/ContentCachingResponseWrapper.java new file mode 100644 index 000000000000..e83a09001c45 --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/ContentCachingResponseWrapper.java @@ -0,0 +1,32 @@ +// Generated automatically from org.springframework.web.util.ContentCachingResponseWrapper for testing purposes + +package org.springframework.web.util; + +import java.io.InputStream; +import java.io.PrintWriter; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletResponseWrapper; + +public class ContentCachingResponseWrapper extends HttpServletResponseWrapper +{ + protected ContentCachingResponseWrapper() {} + protected void copyBodyToResponse(boolean p0){} + public ContentCachingResponseWrapper(HttpServletResponse p0){} + public InputStream getContentInputStream(){ return null; } + public PrintWriter getWriter(){ return null; } + public ServletOutputStream getOutputStream(){ return null; } + public byte[] getContentAsByteArray(){ return null; } + public int getContentSize(){ return 0; } + public int getStatusCode(){ return 0; } + public void copyBodyToResponse(){} + public void flushBuffer(){} + public void reset(){} + public void resetBuffer(){} + public void sendError(int p0){} + public void sendError(int p0, String p1){} + public void sendRedirect(String p0){} + public void setBufferSize(int p0){} + public void setContentLength(int p0){} + public void setContentLengthLong(long p0){} +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/CookieGenerator.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/CookieGenerator.java new file mode 100644 index 000000000000..7c376c3dff62 --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/CookieGenerator.java @@ -0,0 +1,29 @@ +// Generated automatically from org.springframework.web.util.CookieGenerator for testing purposes + +package org.springframework.web.util; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.logging.Log; + +public class CookieGenerator +{ + protected Cookie createCookie(String p0){ return null; } + protected final Log logger = null; + public CookieGenerator(){} + public Integer getCookieMaxAge(){ return null; } + public String getCookieDomain(){ return null; } + public String getCookieName(){ return null; } + public String getCookiePath(){ return null; } + public boolean isCookieHttpOnly(){ return false; } + public boolean isCookieSecure(){ return false; } + public static String DEFAULT_COOKIE_PATH = null; + public void addCookie(HttpServletResponse p0, String p1){} + public void removeCookie(HttpServletResponse p0){} + public void setCookieDomain(String p0){} + public void setCookieHttpOnly(boolean p0){} + public void setCookieMaxAge(Integer p0){} + public void setCookieName(String p0){} + public void setCookiePath(String p0){} + public void setCookieSecure(boolean p0){} +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/DefaultUriBuilderFactory.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/DefaultUriBuilderFactory.java new file mode 100644 index 000000000000..5665186245e5 --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/DefaultUriBuilderFactory.java @@ -0,0 +1,31 @@ +// Generated automatically from org.springframework.web.util.DefaultUriBuilderFactory for testing purposes + +package org.springframework.web.util; + +import java.net.URI; +import java.util.Map; +import org.springframework.web.util.UriBuilder; +import org.springframework.web.util.UriBuilderFactory; +import org.springframework.web.util.UriComponentsBuilder; + +public class DefaultUriBuilderFactory implements UriBuilderFactory +{ + public DefaultUriBuilderFactory(){} + public DefaultUriBuilderFactory(String p0){} + public DefaultUriBuilderFactory(UriComponentsBuilder p0){} + public DefaultUriBuilderFactory.EncodingMode getEncodingMode(){ return null; } + public Map getDefaultUriVariables(){ return null; } + public URI expand(String p0, Map p1){ return null; } + public URI expand(String p0, Object... p1){ return null; } + public UriBuilder builder(){ return null; } + public UriBuilder uriString(String p0){ return null; } + public boolean shouldParsePath(){ return false; } + public void setDefaultUriVariables(Map p0){} + public void setEncodingMode(DefaultUriBuilderFactory.EncodingMode p0){} + public void setParsePath(boolean p0){} + static public enum EncodingMode + { + NONE, TEMPLATE_AND_VALUES, URI_COMPONENT, VALUES_ONLY; + private EncodingMode() {} + } +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/HtmlUtils.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/HtmlUtils.java new file mode 100644 index 000000000000..54a9f6268258 --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/HtmlUtils.java @@ -0,0 +1,16 @@ +// Generated automatically from org.springframework.web.util.HtmlUtils for testing purposes + +package org.springframework.web.util; + + +abstract public class HtmlUtils +{ + public HtmlUtils(){} + public static String htmlEscape(String p0){ return null; } + public static String htmlEscape(String p0, String p1){ return null; } + public static String htmlEscapeDecimal(String p0){ return null; } + public static String htmlEscapeDecimal(String p0, String p1){ return null; } + public static String htmlEscapeHex(String p0){ return null; } + public static String htmlEscapeHex(String p0, String p1){ return null; } + public static String htmlUnescape(String p0){ return null; } +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/ServletContextPropertyUtils.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/ServletContextPropertyUtils.java new file mode 100644 index 000000000000..5bbd89724855 --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/ServletContextPropertyUtils.java @@ -0,0 +1,12 @@ +// Generated automatically from org.springframework.web.util.ServletContextPropertyUtils for testing purposes + +package org.springframework.web.util; + +import javax.servlet.ServletContext; + +abstract public class ServletContextPropertyUtils +{ + public ServletContextPropertyUtils(){} + public static String resolvePlaceholders(String p0, ServletContext p1){ return null; } + public static String resolvePlaceholders(String p0, ServletContext p1, boolean p2){ return null; } +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/ServletRequestPathUtils.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/ServletRequestPathUtils.java new file mode 100644 index 000000000000..01b8ed6138d2 --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/ServletRequestPathUtils.java @@ -0,0 +1,21 @@ +// Generated automatically from org.springframework.web.util.ServletRequestPathUtils for testing purposes + +package org.springframework.web.util; + +import javax.servlet.ServletRequest; +import javax.servlet.http.HttpServletRequest; +import org.springframework.http.server.RequestPath; + +abstract public class ServletRequestPathUtils +{ + public ServletRequestPathUtils(){} + public static Object getCachedPath(ServletRequest p0){ return null; } + public static RequestPath getParsedRequestPath(ServletRequest p0){ return null; } + public static RequestPath parseAndCache(HttpServletRequest p0){ return null; } + public static String PATH_ATTRIBUTE = null; + public static String getCachedPathValue(ServletRequest p0){ return null; } + public static boolean hasCachedPath(ServletRequest p0){ return false; } + public static boolean hasParsedRequestPath(ServletRequest p0){ return false; } + public static void clearParsedRequestPath(ServletRequest p0){} + public static void setParsedRequestPath(RequestPath p0, ServletRequest p1){} +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriBuilder.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriBuilder.java new file mode 100644 index 000000000000..f241d1372576 --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriBuilder.java @@ -0,0 +1,33 @@ +// Generated automatically from org.springframework.web.util.UriBuilder for testing purposes + +package org.springframework.web.util; + +import java.net.URI; +import java.util.Collection; +import java.util.Map; +import java.util.Optional; +import org.springframework.util.MultiValueMap; + +public interface UriBuilder +{ + URI build(Map p0); + URI build(Object... p0); + UriBuilder fragment(String p0); + UriBuilder host(String p0); + UriBuilder path(String p0); + UriBuilder pathSegment(String... p0); + UriBuilder port(String p0); + UriBuilder port(int p0); + UriBuilder query(String p0); + UriBuilder queryParam(String p0, Collection p1); + UriBuilder queryParam(String p0, Object... p1); + UriBuilder queryParamIfPresent(String p0, Optional p1); + UriBuilder queryParams(MultiValueMap p0); + UriBuilder replacePath(String p0); + UriBuilder replaceQuery(String p0); + UriBuilder replaceQueryParam(String p0, Collection p1); + UriBuilder replaceQueryParam(String p0, Object... p1); + UriBuilder replaceQueryParams(MultiValueMap p0); + UriBuilder scheme(String p0); + UriBuilder userInfo(String p0); +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriBuilderFactory.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriBuilderFactory.java new file mode 100644 index 000000000000..e886e5148e8e --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriBuilderFactory.java @@ -0,0 +1,12 @@ +// Generated automatically from org.springframework.web.util.UriBuilderFactory for testing purposes + +package org.springframework.web.util; + +import org.springframework.web.util.UriBuilder; +import org.springframework.web.util.UriTemplateHandler; + +public interface UriBuilderFactory extends UriTemplateHandler +{ + UriBuilder builder(); + UriBuilder uriString(String p0); +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriComponents.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriComponents.java new file mode 100644 index 000000000000..b049020ab4b1 --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriComponents.java @@ -0,0 +1,46 @@ +// Generated automatically from org.springframework.web.util.UriComponents for testing purposes + +package org.springframework.web.util; + +import java.io.Serializable; +import java.net.URI; +import java.nio.charset.Charset; +import java.util.List; +import java.util.Map; +import java.util.function.UnaryOperator; +import org.springframework.util.MultiValueMap; +import org.springframework.web.util.UriComponentsBuilder; + +abstract public class UriComponents implements Serializable +{ + protected UriComponents() {} + abstract UriComponents expandInternal(UriComponents.UriTemplateVariables p0); + protected UriComponents(String p0, String p1){} + protected abstract void copyToUriComponentsBuilder(UriComponentsBuilder p0); + public abstract List getPathSegments(); + public abstract MultiValueMap getQueryParams(); + public abstract String getHost(); + public abstract String getPath(); + public abstract String getQuery(); + public abstract String getSchemeSpecificPart(); + public abstract String getUserInfo(); + public abstract String toUriString(); + public abstract URI toUri(); + public abstract UriComponents encode(Charset p0); + public abstract UriComponents normalize(); + public abstract int getPort(); + public final String getFragment(){ return null; } + public final String getScheme(){ return null; } + public final String toString(){ return null; } + public final UriComponents encode(){ return null; } + public final UriComponents expand(Map p0){ return null; } + public final UriComponents expand(Object... p0){ return null; } + public final UriComponents expand(UriComponents.UriTemplateVariables p0){ return null; } + static String expandUriComponent(String p0, UriComponents.UriTemplateVariables p1){ return null; } + static String expandUriComponent(String p0, UriComponents.UriTemplateVariables p1, UnaryOperator p2){ return null; } + static public interface UriTemplateVariables + { + Object getValue(String p0); + static Object SKIP_VALUE = null; + } +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriComponentsBuilder.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriComponentsBuilder.java new file mode 100644 index 000000000000..e0d1caef9e6a --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriComponentsBuilder.java @@ -0,0 +1,63 @@ +// Generated automatically from org.springframework.web.util.UriComponentsBuilder for testing purposes + +package org.springframework.web.util; + +import java.net.InetSocketAddress; +import java.net.URI; +import java.nio.charset.Charset; +import java.util.Collection; +import java.util.Map; +import java.util.Optional; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpRequest; +import org.springframework.util.MultiValueMap; +import org.springframework.web.util.UriBuilder; +import org.springframework.web.util.UriComponents; + +public class UriComponentsBuilder implements Cloneable, UriBuilder +{ + UriComponentsBuilder adaptFromForwardedHeaders(HttpHeaders p0){ return null; } + protected UriComponentsBuilder(){} + protected UriComponentsBuilder(UriComponentsBuilder p0){} + public Object clone(){ return null; } + public String toUriString(){ return null; } + public URI build(Map p0){ return null; } + public URI build(Object... p0){ return null; } + public UriComponents build(){ return null; } + public UriComponents build(boolean p0){ return null; } + public UriComponents buildAndExpand(Map p0){ return null; } + public UriComponents buildAndExpand(Object... p0){ return null; } + public UriComponentsBuilder cloneBuilder(){ return null; } + public UriComponentsBuilder encode(Charset p0){ return null; } + public UriComponentsBuilder fragment(String p0){ return null; } + public UriComponentsBuilder host(String p0){ return null; } + public UriComponentsBuilder path(String p0){ return null; } + public UriComponentsBuilder pathSegment(String... p0){ return null; } + public UriComponentsBuilder port(String p0){ return null; } + public UriComponentsBuilder port(int p0){ return null; } + public UriComponentsBuilder query(String p0){ return null; } + public UriComponentsBuilder queryParam(String p0, Collection p1){ return null; } + public UriComponentsBuilder queryParam(String p0, Object... p1){ return null; } + public UriComponentsBuilder queryParamIfPresent(String p0, Optional p1){ return null; } + public UriComponentsBuilder queryParams(MultiValueMap p0){ return null; } + public UriComponentsBuilder replacePath(String p0){ return null; } + public UriComponentsBuilder replaceQuery(String p0){ return null; } + public UriComponentsBuilder replaceQueryParam(String p0, Collection p1){ return null; } + public UriComponentsBuilder replaceQueryParam(String p0, Object... p1){ return null; } + public UriComponentsBuilder replaceQueryParams(MultiValueMap p0){ return null; } + public UriComponentsBuilder scheme(String p0){ return null; } + public UriComponentsBuilder schemeSpecificPart(String p0){ return null; } + public UriComponentsBuilder uri(URI p0){ return null; } + public UriComponentsBuilder uriComponents(UriComponents p0){ return null; } + public UriComponentsBuilder uriVariables(Map p0){ return null; } + public UriComponentsBuilder userInfo(String p0){ return null; } + public final UriComponentsBuilder encode(){ return null; } + public static InetSocketAddress parseForwardedFor(HttpRequest p0, InetSocketAddress p1){ return null; } + public static UriComponentsBuilder fromHttpRequest(HttpRequest p0){ return null; } + public static UriComponentsBuilder fromHttpUrl(String p0){ return null; } + public static UriComponentsBuilder fromOriginHeader(String p0){ return null; } + public static UriComponentsBuilder fromPath(String p0){ return null; } + public static UriComponentsBuilder fromUri(URI p0){ return null; } + public static UriComponentsBuilder fromUriString(String p0){ return null; } + public static UriComponentsBuilder newInstance(){ return null; } +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriTemplate.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriTemplate.java new file mode 100644 index 000000000000..9c4ffacaa931 --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriTemplate.java @@ -0,0 +1,20 @@ +// Generated automatically from org.springframework.web.util.UriTemplate for testing purposes + +package org.springframework.web.util; + +import java.io.Serializable; +import java.net.URI; +import java.util.List; +import java.util.Map; + +public class UriTemplate implements Serializable +{ + protected UriTemplate() {} + public List getVariableNames(){ return null; } + public Map match(String p0){ return null; } + public String toString(){ return null; } + public URI expand(Map p0){ return null; } + public URI expand(Object... p0){ return null; } + public UriTemplate(String p0){} + public boolean matches(String p0){ return false; } +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriTemplateHandler.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriTemplateHandler.java new file mode 100644 index 000000000000..a09368ba3cb4 --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriTemplateHandler.java @@ -0,0 +1,12 @@ +// Generated automatically from org.springframework.web.util.UriTemplateHandler for testing purposes + +package org.springframework.web.util; + +import java.net.URI; +import java.util.Map; + +public interface UriTemplateHandler +{ + URI expand(String p0, Map p1); + URI expand(String p0, Object... p1); +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriUtils.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriUtils.java new file mode 100644 index 000000000000..691c8e45e1a7 --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UriUtils.java @@ -0,0 +1,40 @@ +// Generated automatically from org.springframework.web.util.UriUtils for testing purposes + +package org.springframework.web.util; + +import java.nio.charset.Charset; +import java.util.Map; +import org.springframework.util.MultiValueMap; + +abstract public class UriUtils +{ + public UriUtils(){} + public static Map encodeUriVariables(Map p0){ return null; } + public static MultiValueMap encodeQueryParams(MultiValueMap p0){ return null; } + public static Object[] encodeUriVariables(Object... p0){ return null; } + public static String decode(String p0, Charset p1){ return null; } + public static String decode(String p0, String p1){ return null; } + public static String encode(String p0, Charset p1){ return null; } + public static String encode(String p0, String p1){ return null; } + public static String encodeAuthority(String p0, Charset p1){ return null; } + public static String encodeAuthority(String p0, String p1){ return null; } + public static String encodeFragment(String p0, Charset p1){ return null; } + public static String encodeFragment(String p0, String p1){ return null; } + public static String encodeHost(String p0, Charset p1){ return null; } + public static String encodeHost(String p0, String p1){ return null; } + public static String encodePath(String p0, Charset p1){ return null; } + public static String encodePath(String p0, String p1){ return null; } + public static String encodePathSegment(String p0, Charset p1){ return null; } + public static String encodePathSegment(String p0, String p1){ return null; } + public static String encodePort(String p0, Charset p1){ return null; } + public static String encodePort(String p0, String p1){ return null; } + public static String encodeQuery(String p0, Charset p1){ return null; } + public static String encodeQuery(String p0, String p1){ return null; } + public static String encodeQueryParam(String p0, Charset p1){ return null; } + public static String encodeQueryParam(String p0, String p1){ return null; } + public static String encodeScheme(String p0, Charset p1){ return null; } + public static String encodeScheme(String p0, String p1){ return null; } + public static String encodeUserInfo(String p0, Charset p1){ return null; } + public static String encodeUserInfo(String p0, String p1){ return null; } + public static String extractFileExtension(String p0){ return null; } +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UrlPathHelper.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UrlPathHelper.java new file mode 100644 index 000000000000..acabbbb7de76 --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/UrlPathHelper.java @@ -0,0 +1,44 @@ +// Generated automatically from org.springframework.web.util.UrlPathHelper for testing purposes + +package org.springframework.web.util; + +import java.util.Map; +import javax.servlet.ServletRequest; +import javax.servlet.http.HttpServletRequest; +import org.springframework.util.MultiValueMap; + +public class UrlPathHelper +{ + protected String determineEncoding(HttpServletRequest p0){ return null; } + protected String getDefaultEncoding(){ return null; } + protected String getPathWithinServletMapping(HttpServletRequest p0, String p1){ return null; } + public Map decodePathVariables(HttpServletRequest p0, Map p1){ return null; } + public MultiValueMap decodeMatrixVariables(HttpServletRequest p0, MultiValueMap p1){ return null; } + public String decodeRequestString(HttpServletRequest p0, String p1){ return null; } + public String getContextPath(HttpServletRequest p0){ return null; } + public String getLookupPathForRequest(HttpServletRequest p0){ return null; } + public String getLookupPathForRequest(HttpServletRequest p0, String p1){ return null; } + public String getOriginatingContextPath(HttpServletRequest p0){ return null; } + public String getOriginatingQueryString(HttpServletRequest p0){ return null; } + public String getOriginatingRequestUri(HttpServletRequest p0){ return null; } + public String getOriginatingServletPath(HttpServletRequest p0){ return null; } + public String getPathWithinApplication(HttpServletRequest p0){ return null; } + public String getPathWithinServletMapping(HttpServletRequest p0){ return null; } + public String getRequestUri(HttpServletRequest p0){ return null; } + public String getServletPath(HttpServletRequest p0){ return null; } + public String removeSemicolonContent(String p0){ return null; } + public String resolveAndCacheLookupPath(HttpServletRequest p0){ return null; } + public UrlPathHelper(){} + public boolean isUrlDecode(){ return false; } + public boolean shouldRemoveSemicolonContent(){ return false; } + public static String PATH_ATTRIBUTE = null; + public static String getResolvedLookupPath(ServletRequest p0){ return null; } + public static UrlPathHelper defaultInstance = null; + public static UrlPathHelper rawPathInstance = null; + public void setAlwaysUseFullPath(boolean p0){} + public void setDefaultEncoding(String p0){} + public void setRemoveSemicolonContent(boolean p0){} + public void setUrlDecode(boolean p0){} + static Boolean websphereComplianceFlag = null; + static boolean servlet4Present = false; +} diff --git a/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/WebUtils.java b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/WebUtils.java new file mode 100644 index 000000000000..84138bcea475 --- /dev/null +++ b/java/ql/test/stubs/springframework-5.3.8/org/springframework/web/util/WebUtils.java @@ -0,0 +1,69 @@ +// Generated automatically from org.springframework.web.util.WebUtils for testing purposes + +package org.springframework.web.util; + +import java.io.File; +import java.util.Collection; +import java.util.Map; +import javax.servlet.ServletContext; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import org.springframework.http.HttpRequest; +import org.springframework.util.MultiValueMap; + +abstract public class WebUtils +{ + public WebUtils(){} + public static T getNativeRequest(ServletRequest p0, Class p1){ return null; } + public static T getNativeResponse(ServletResponse p0, Class p1){ return null; } + public static Boolean getDefaultHtmlEscape(ServletContext p0){ return null; } + public static Boolean getResponseEncodedHtmlEscape(ServletContext p0){ return null; } + public static Cookie getCookie(HttpServletRequest p0, String p1){ return null; } + public static File getTempDir(ServletContext p0){ return null; } + public static Map getParametersStartingWith(ServletRequest p0, String p1){ return null; } + public static MultiValueMap parseMatrixVariables(String p0){ return null; } + public static Object getRequiredSessionAttribute(HttpServletRequest p0, String p1){ return null; } + public static Object getSessionAttribute(HttpServletRequest p0, String p1){ return null; } + public static Object getSessionMutex(HttpSession p0){ return null; } + public static String CONTENT_TYPE_CHARSET_PREFIX = null; + public static String DEFAULT_CHARACTER_ENCODING = null; + public static String DEFAULT_WEB_APP_ROOT_KEY = null; + public static String ERROR_EXCEPTION_ATTRIBUTE = null; + public static String ERROR_EXCEPTION_TYPE_ATTRIBUTE = null; + public static String ERROR_MESSAGE_ATTRIBUTE = null; + public static String ERROR_REQUEST_URI_ATTRIBUTE = null; + public static String ERROR_SERVLET_NAME_ATTRIBUTE = null; + public static String ERROR_STATUS_CODE_ATTRIBUTE = null; + public static String FORWARD_CONTEXT_PATH_ATTRIBUTE = null; + public static String FORWARD_PATH_INFO_ATTRIBUTE = null; + public static String FORWARD_QUERY_STRING_ATTRIBUTE = null; + public static String FORWARD_REQUEST_URI_ATTRIBUTE = null; + public static String FORWARD_SERVLET_PATH_ATTRIBUTE = null; + public static String HTML_ESCAPE_CONTEXT_PARAM = null; + public static String INCLUDE_CONTEXT_PATH_ATTRIBUTE = null; + public static String INCLUDE_PATH_INFO_ATTRIBUTE = null; + public static String INCLUDE_QUERY_STRING_ATTRIBUTE = null; + public static String INCLUDE_REQUEST_URI_ATTRIBUTE = null; + public static String INCLUDE_SERVLET_PATH_ATTRIBUTE = null; + public static String RESPONSE_ENCODED_HTML_ESCAPE_CONTEXT_PARAM = null; + public static String SESSION_MUTEX_ATTRIBUTE = null; + public static String TEMP_DIR_CONTEXT_ATTRIBUTE = null; + public static String WEB_APP_ROOT_KEY_PARAM = null; + public static String findParameterValue(Map p0, String p1){ return null; } + public static String findParameterValue(ServletRequest p0, String p1){ return null; } + public static String getRealPath(ServletContext p0, String p1){ return null; } + public static String getSessionId(HttpServletRequest p0){ return null; } + public static String[] SUBMIT_IMAGE_SUFFIXES = null; + public static boolean hasSubmitParameter(ServletRequest p0, String p1){ return false; } + public static boolean isIncludeRequest(ServletRequest p0){ return false; } + public static boolean isSameOrigin(HttpRequest p0){ return false; } + public static boolean isValidOrigin(HttpRequest p0, Collection p1){ return false; } + public static void clearErrorRequestAttributes(HttpServletRequest p0){} + public static void exposeErrorRequestAttributes(HttpServletRequest p0, Throwable p1, String p2){} + public static void removeWebAppRootSystemProperty(ServletContext p0){} + public static void setSessionAttribute(HttpServletRequest p0, String p1, Object p2){} + public static void setWebAppRootSystemProperty(ServletContext p0){} +}