From 0a697e49c115ade34c65f9d98f196c6cc23b3e77 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Tue, 24 Sep 2024 17:29:25 -0700 Subject: [PATCH 01/10] Add MaD --- java/ql/lib/change-notes/2024-09-24-multipart.md | 4 ++++ java/ql/lib/ext/jakarta.servlet.http.model.yml | 7 +++++++ java/ql/lib/ext/javax.servlet.http.model.yml | 8 ++++++++ java/ql/lib/ext/org.apache.commons.fileupload.yml | 15 +++++++++++++++ 4 files changed, 34 insertions(+) create mode 100644 java/ql/lib/change-notes/2024-09-24-multipart.md create mode 100644 java/ql/lib/ext/org.apache.commons.fileupload.yml diff --git a/java/ql/lib/change-notes/2024-09-24-multipart.md b/java/ql/lib/change-notes/2024-09-24-multipart.md new file mode 100644 index 000000000000..f10cfbfd9443 --- /dev/null +++ b/java/ql/lib/change-notes/2024-09-24-multipart.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added more dataflow models of `org.apache.commons.fileupload.FileItem` and `javax.servlet.http.Part`. \ No newline at end of file diff --git a/java/ql/lib/ext/jakarta.servlet.http.model.yml b/java/ql/lib/ext/jakarta.servlet.http.model.yml index 5a83b1ac08d8..c1c55bddb9ec 100644 --- a/java/ql/lib/ext/jakarta.servlet.http.model.yml +++ b/java/ql/lib/ext/jakarta.servlet.http.model.yml @@ -4,3 +4,10 @@ extensions: extensible: sourceModel data: - ["jakarta.servlet.http", "HttpServletRequest", True, "getServletPath", "", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getInputStream", "", "()", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getName", "", "()", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getContentType", "", "()", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getHeader", "", "(String)", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getHeaders", "", "(String)", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getHeaderNames", "", "()", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getSubmittedFileName", "", "()", "ReturnValue", "remote", "manual"] diff --git a/java/ql/lib/ext/javax.servlet.http.model.yml b/java/ql/lib/ext/javax.servlet.http.model.yml index ec35445d199a..dd345ed3c3e0 100644 --- a/java/ql/lib/ext/javax.servlet.http.model.yml +++ b/java/ql/lib/ext/javax.servlet.http.model.yml @@ -19,6 +19,14 @@ extensions: - ["javax.servlet.http", "HttpServletRequest", False, "getRequestURI", "()", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "HttpServletRequest", False, "getRequestURL", "()", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "HttpServletRequest", False, "getServletPath", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getName", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getContentType", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getHeader", "(String)", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getSubmittedFileName", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getHeaders", "(String)", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getHeadersNames", "()", "", "ReturnValue", "remote", "manual"] + - addsTo: pack: codeql/java-all diff --git a/java/ql/lib/ext/org.apache.commons.fileupload.yml b/java/ql/lib/ext/org.apache.commons.fileupload.yml new file mode 100644 index 000000000000..dfa87cd22bb0 --- /dev/null +++ b/java/ql/lib/ext/org.apache.commons.fileupload.yml @@ -0,0 +1,15 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["org.apache.commons.fileupload", "FileItem", True, "getInputStream", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getFieldName", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getContentType", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getString", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getName", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "get", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "getContentType", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "getFieldName", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "getName", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "openStream", "", "", "ReturnValue", "remote", "manual"] \ No newline at end of file From d99f552cb3ecc9b493ef26cbcf97795cc7feb522 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Wed, 25 Sep 2024 08:08:02 +0000 Subject: [PATCH 02/10] Test Issues --- .../dataflow/taintsources/App.java | 21 +++++ .../dataflow/taintsources/options | 2 +- .../test/javax/servlet/AsyncContext.java | 31 +++++++ .../stubs/test/javax/servlet/AsyncEvent.java | 20 +++++ .../test/javax/servlet/AsyncListener.java | 14 ++++ .../test/javax/servlet/DispatcherType.java | 10 +++ .../test/stubs/test/javax/servlet/Filter.java | 15 ++++ .../stubs/test/javax/servlet/FilterChain.java | 11 +++ .../test/javax/servlet/FilterConfig.java | 14 ++++ .../javax/servlet/FilterRegistration.java | 19 +++++ .../test/javax/servlet/GenericServlet.java | 28 +++++++ .../javax/servlet/HttpConstraintElement.java | 16 ++++ .../servlet/HttpMethodConstraintElement.java | 13 +++ .../javax/servlet/MultipartConfigElement.java | 17 ++++ .../test/javax/servlet/ReadListener.java | 12 +++ .../test/javax/servlet/Registration.java | 20 +++++ .../test/javax/servlet/RequestDispatcher.java | 30 +++++++ .../stubs/test/javax/servlet/Servlet.java | 16 ++++ .../test/javax/servlet/ServletConfig.java | 14 ++++ .../test/javax/servlet/ServletContext.java | 83 +++++++++++++++++++ .../test/javax/servlet/ServletException.java | 27 ++++++ .../javax/servlet/ServletInputStream.java | 15 ++++ .../javax/servlet/ServletOutputStream.java | 28 +++++++ .../javax/servlet/ServletRegistration.java | 23 +++++ .../test/javax/servlet/ServletRequest.java | 55 ++++++++++++ .../test/javax/servlet/ServletResponse.java | 27 ++++++ .../javax/servlet/ServletSecurityElement.java | 19 +++++ .../javax/servlet/SessionCookieConfig.java | 22 +++++ .../javax/servlet/SessionTrackingMode.java | 10 +++ .../test/javax/servlet/WriteListener.java | 11 +++ .../servlet/annotation/HttpConstraint.java | 18 ++++ .../annotation/HttpMethodConstraint.java | 19 +++++ .../servlet/annotation/MultipartConfig.java | 19 +++++ .../servlet/annotation/ServletSecurity.java | 33 ++++++++ .../servlet/annotation/WebInitParam.java | 20 +++++ .../javax/servlet/annotation/WebServlet.java | 28 +++++++ .../descriptor/JspConfigDescriptor.java | 13 +++ .../JspPropertyGroupDescriptor.java | 21 +++++ .../servlet/descriptor/TaglibDescriptor.java | 10 +++ .../stubs/test/javax/servlet/http/Cookie.java | 29 +++++++ .../test/javax/servlet/http/HttpServlet.java | 24 ++++++ .../servlet/http/HttpServletMapping.java | 13 +++ .../servlet/http/HttpServletRequest.java | 60 ++++++++++++++ .../servlet/http/HttpServletResponse.java | 77 +++++++++++++++++ .../test/javax/servlet/http/HttpSession.java | 28 +++++++ .../servlet/http/HttpSessionContext.java | 12 +++ .../servlet/http/HttpUpgradeHandler.java | 11 +++ .../test/javax/servlet/http/MappingMatch.java | 10 +++ .../stubs/test/javax/servlet/http/Part.java | 20 +++++ .../test/javax/servlet/http/PushBuilder.java | 23 +++++ .../javax/servlet/http/WebConnection.java | 12 +++ 51 files changed, 1142 insertions(+), 1 deletion(-) create mode 100644 java/ql/test/library-tests/dataflow/taintsources/App.java create mode 100644 java/ql/test/stubs/test/javax/servlet/AsyncContext.java create mode 100644 java/ql/test/stubs/test/javax/servlet/AsyncEvent.java create mode 100644 java/ql/test/stubs/test/javax/servlet/AsyncListener.java create mode 100644 java/ql/test/stubs/test/javax/servlet/DispatcherType.java create mode 100644 java/ql/test/stubs/test/javax/servlet/Filter.java create mode 100644 java/ql/test/stubs/test/javax/servlet/FilterChain.java create mode 100644 java/ql/test/stubs/test/javax/servlet/FilterConfig.java create mode 100644 java/ql/test/stubs/test/javax/servlet/FilterRegistration.java create mode 100644 java/ql/test/stubs/test/javax/servlet/GenericServlet.java create mode 100644 java/ql/test/stubs/test/javax/servlet/HttpConstraintElement.java create mode 100644 java/ql/test/stubs/test/javax/servlet/HttpMethodConstraintElement.java create mode 100644 java/ql/test/stubs/test/javax/servlet/MultipartConfigElement.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ReadListener.java create mode 100644 java/ql/test/stubs/test/javax/servlet/Registration.java create mode 100644 java/ql/test/stubs/test/javax/servlet/RequestDispatcher.java create mode 100644 java/ql/test/stubs/test/javax/servlet/Servlet.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletConfig.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletContext.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletException.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletInputStream.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletOutputStream.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletRegistration.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletRequest.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletResponse.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletSecurityElement.java create mode 100644 java/ql/test/stubs/test/javax/servlet/SessionCookieConfig.java create mode 100644 java/ql/test/stubs/test/javax/servlet/SessionTrackingMode.java create mode 100644 java/ql/test/stubs/test/javax/servlet/WriteListener.java create mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/HttpConstraint.java create mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/HttpMethodConstraint.java create mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/MultipartConfig.java create mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/ServletSecurity.java create mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/WebInitParam.java create mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/WebServlet.java create mode 100644 java/ql/test/stubs/test/javax/servlet/descriptor/JspConfigDescriptor.java create mode 100644 java/ql/test/stubs/test/javax/servlet/descriptor/JspPropertyGroupDescriptor.java create mode 100644 java/ql/test/stubs/test/javax/servlet/descriptor/TaglibDescriptor.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/Cookie.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpServlet.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpServletMapping.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpServletRequest.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpServletResponse.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpSession.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpSessionContext.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpUpgradeHandler.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/MappingMatch.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/Part.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/PushBuilder.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/WebConnection.java diff --git a/java/ql/test/library-tests/dataflow/taintsources/App.java b/java/ql/test/library-tests/dataflow/taintsources/App.java new file mode 100644 index 000000000000..73caade75250 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/App.java @@ -0,0 +1,21 @@ +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.Part; + +/** + * Hello world! + */ +public class App { + + + +public class FileUploadServlet extends HttpServlet { + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { + Part filePart = request.getPart("file"); // Retrieves + sink(filePart.getName()); + + } +} +} \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/options b/java/ql/test/library-tests/dataflow/taintsources/options index c8249b05e38e..f2365fc973b8 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/options +++ b/java/ql/test/library-tests/dataflow/taintsources/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263:${testdir}/../../../stubs/test \ No newline at end of file diff --git a/java/ql/test/stubs/test/javax/servlet/AsyncContext.java b/java/ql/test/stubs/test/javax/servlet/AsyncContext.java new file mode 100644 index 000000000000..70a39f55ac97 --- /dev/null +++ b/java/ql/test/stubs/test/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(java.lang.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/test/javax/servlet/AsyncEvent.java b/java/ql/test/stubs/test/javax/servlet/AsyncEvent.java new file mode 100644 index 000000000000..d7cb9c2b175a --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/AsyncListener.java b/java/ql/test/stubs/test/javax/servlet/AsyncListener.java new file mode 100644 index 000000000000..2723482f6683 --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/DispatcherType.java b/java/ql/test/stubs/test/javax/servlet/DispatcherType.java new file mode 100644 index 000000000000..2b7b44f328d6 --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/Filter.java b/java/ql/test/stubs/test/javax/servlet/Filter.java new file mode 100644 index 000000000000..64b9f9d73a89 --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/FilterChain.java b/java/ql/test/stubs/test/javax/servlet/FilterChain.java new file mode 100644 index 000000000000..f64ab7226841 --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/FilterConfig.java b/java/ql/test/stubs/test/javax/servlet/FilterConfig.java new file mode 100644 index 000000000000..0e140c6680c9 --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/FilterRegistration.java b/java/ql/test/stubs/test/javax/servlet/FilterRegistration.java new file mode 100644 index 000000000000..6ad0739ceb6b --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/GenericServlet.java b/java/ql/test/stubs/test/javax/servlet/GenericServlet.java new file mode 100644 index 000000000000..5f7bdcda487b --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/GenericServlet.java @@ -0,0 +1,28 @@ +// Generated automatically from javax.servlet.GenericServlet for testing purposes + +package javax.servlet; + +import java.io.Serializable; +import java.util.Enumeration; +import javax.servlet.Servlet; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +abstract public class GenericServlet implements Serializable, Servlet, ServletConfig +{ + public Enumeration getInitParameterNames(){ return null; } + public GenericServlet(){} + public ServletConfig getServletConfig(){ return null; } + public ServletContext getServletContext(){ return null; } + public String getInitParameter(String p0){ return null; } + public String getServletInfo(){ return null; } + public String getServletName(){ return null; } + public abstract void service(ServletRequest p0, ServletResponse p1); + public void destroy(){} + public void init(){} + public void init(ServletConfig p0){} + public void log(String p0){} + public void log(String p0, Throwable p1){} +} diff --git a/java/ql/test/stubs/test/javax/servlet/HttpConstraintElement.java b/java/ql/test/stubs/test/javax/servlet/HttpConstraintElement.java new file mode 100644 index 000000000000..6598aa47cc5b --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/HttpMethodConstraintElement.java b/java/ql/test/stubs/test/javax/servlet/HttpMethodConstraintElement.java new file mode 100644 index 000000000000..ddb525270045 --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/MultipartConfigElement.java b/java/ql/test/stubs/test/javax/servlet/MultipartConfigElement.java new file mode 100644 index 000000000000..8470d9a5317f --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/ReadListener.java b/java/ql/test/stubs/test/javax/servlet/ReadListener.java new file mode 100644 index 000000000000..367594ef7da6 --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/Registration.java b/java/ql/test/stubs/test/javax/servlet/Registration.java new file mode 100644 index 000000000000..5d4095813ef6 --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/RequestDispatcher.java b/java/ql/test/stubs/test/javax/servlet/RequestDispatcher.java new file mode 100644 index 000000000000..ad017e4f5015 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/RequestDispatcher.java @@ -0,0 +1,30 @@ +// Generated automatically from javax.servlet.RequestDispatcher for testing purposes + +package javax.servlet; + +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +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/test/javax/servlet/Servlet.java b/java/ql/test/stubs/test/javax/servlet/Servlet.java new file mode 100644 index 000000000000..231c011a6f88 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/Servlet.java @@ -0,0 +1,16 @@ +// Generated automatically from javax.servlet.Servlet for testing purposes + +package javax.servlet; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public interface Servlet +{ + ServletConfig getServletConfig(); + String getServletInfo(); + void destroy(); + void init(ServletConfig p0); + void service(ServletRequest p0, ServletResponse p1); +} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletConfig.java b/java/ql/test/stubs/test/javax/servlet/ServletConfig.java new file mode 100644 index 000000000000..c483c16ac4e8 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ServletConfig.java @@ -0,0 +1,14 @@ +// Generated automatically from javax.servlet.ServletConfig for testing purposes + +package javax.servlet; + +import java.util.Enumeration; +import javax.servlet.ServletContext; + +public interface ServletConfig +{ + Enumeration getInitParameterNames(); + ServletContext getServletContext(); + String getInitParameter(String p0); + String getServletName(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletContext.java b/java/ql/test/stubs/test/javax/servlet/ServletContext.java new file mode 100644 index 000000000000..812393f61e99 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ServletContext.java @@ -0,0 +1,83 @@ +// Generated automatically from javax.servlet.ServletContext for testing purposes + +package javax.servlet; + +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 +{ + T createListener(java.lang.Class p0); + void addListener(T p0); + T createFilter(java.lang.Class p0); + T createServlet(java.lang.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); + 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/test/javax/servlet/ServletException.java b/java/ql/test/stubs/test/javax/servlet/ServletException.java new file mode 100644 index 000000000000..812b1687665e --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ServletException.java @@ -0,0 +1,27 @@ +/** + * + * Copyright 2003-2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * Adapted from the Java Servlet API version 2.4 as available at + * http://search.maven.org/remotecontent?filepath=javax/servlet/servlet-api/2.4/servlet-api-2.4-sources.jar + * Only relevant stubs of this file have been retained for test purposes. + */ + +package javax.servlet; + +public class ServletException extends Exception { +} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletInputStream.java b/java/ql/test/stubs/test/javax/servlet/ServletInputStream.java new file mode 100644 index 000000000000..31034066970c --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ServletInputStream.java @@ -0,0 +1,15 @@ +// Generated automatically from javax.servlet.ServletInputStream for testing purposes + +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/test/javax/servlet/ServletOutputStream.java b/java/ql/test/stubs/test/javax/servlet/ServletOutputStream.java new file mode 100644 index 000000000000..52a2162c9eb3 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ServletOutputStream.java @@ -0,0 +1,28 @@ +// Generated automatically from javax.servlet.ServletOutputStream for testing purposes + +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){} + public void print(double p0){} + public void print(float p0){} + public void print(int p0){} + public void print(long p0){} + public void println(){} + public void println(String p0){} + public void println(boolean p0){} + public void println(char p0){} + public void println(double p0){} + public void println(float p0){} + public void println(int p0){} + public void println(long p0){} +} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletRegistration.java b/java/ql/test/stubs/test/javax/servlet/ServletRegistration.java new file mode 100644 index 000000000000..a1cc66f2d190 --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/ServletRequest.java b/java/ql/test/stubs/test/javax/servlet/ServletRequest.java new file mode 100644 index 000000000000..fc0db462cc00 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ServletRequest.java @@ -0,0 +1,55 @@ +// Generated automatically from javax.servlet.ServletRequest 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.ServletResponse; + +public interface ServletRequest +{ + AsyncContext getAsyncContext(); + AsyncContext startAsync(); + AsyncContext startAsync(ServletRequest p0, ServletResponse p1); + BufferedReader getReader(); + DispatcherType getDispatcherType(); + Enumeration getLocales(); + Enumeration getAttributeNames(); + Enumeration getParameterNames(); + Locale getLocale(); + Map getParameterMap(); + Object getAttribute(String p0); + RequestDispatcher getRequestDispatcher(String p0); + ServletContext getServletContext(); + ServletInputStream getInputStream(); + String getCharacterEncoding(); + String getContentType(); + String getLocalAddr(); + String getLocalName(); + String getParameter(String p0); + String getProtocol(); + String getRealPath(String p0); + String getRemoteAddr(); + String getRemoteHost(); + 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/test/javax/servlet/ServletResponse.java b/java/ql/test/stubs/test/javax/servlet/ServletResponse.java new file mode 100644 index 000000000000..db6610bc15d2 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ServletResponse.java @@ -0,0 +1,27 @@ +// Generated automatically from javax.servlet.ServletResponse for testing purposes + +package javax.servlet; + +import java.io.PrintWriter; +import java.util.Locale; +import javax.servlet.ServletOutputStream; + +public interface ServletResponse +{ + Locale getLocale(); + PrintWriter getWriter(); + ServletOutputStream getOutputStream(); + String getCharacterEncoding(); + String getContentType(); + boolean isCommitted(); + int getBufferSize(); + void flushBuffer(); + void reset(); + void resetBuffer(); + 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/test/javax/servlet/ServletSecurityElement.java b/java/ql/test/stubs/test/javax/servlet/ServletSecurityElement.java new file mode 100644 index 000000000000..def47937391b --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/SessionCookieConfig.java b/java/ql/test/stubs/test/javax/servlet/SessionCookieConfig.java new file mode 100644 index 000000000000..4cae9a11f305 --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/SessionTrackingMode.java b/java/ql/test/stubs/test/javax/servlet/SessionTrackingMode.java new file mode 100644 index 000000000000..684ac40c56fb --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/WriteListener.java b/java/ql/test/stubs/test/javax/servlet/WriteListener.java new file mode 100644 index 000000000000..24fe504271c6 --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/annotation/HttpConstraint.java b/java/ql/test/stubs/test/javax/servlet/annotation/HttpConstraint.java new file mode 100644 index 000000000000..f47efc627448 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/annotation/HttpConstraint.java @@ -0,0 +1,18 @@ +// Generated automatically from javax.servlet.annotation.HttpConstraint for testing purposes + +package javax.servlet.annotation; + +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import javax.servlet.annotation.ServletSecurity; + +@Documented +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +public @interface HttpConstraint +{ + ServletSecurity.EmptyRoleSemantic value(); + ServletSecurity.TransportGuarantee transportGuarantee(); + String[] rolesAllowed(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/HttpMethodConstraint.java b/java/ql/test/stubs/test/javax/servlet/annotation/HttpMethodConstraint.java new file mode 100644 index 000000000000..288f4651018b --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/annotation/HttpMethodConstraint.java @@ -0,0 +1,19 @@ +// Generated automatically from javax.servlet.annotation.HttpMethodConstraint for testing purposes + +package javax.servlet.annotation; + +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import javax.servlet.annotation.ServletSecurity; + +@Documented +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +public @interface HttpMethodConstraint +{ + ServletSecurity.EmptyRoleSemantic emptyRoleSemantic(); + ServletSecurity.TransportGuarantee transportGuarantee(); + String value(); + String[] rolesAllowed(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/MultipartConfig.java b/java/ql/test/stubs/test/javax/servlet/annotation/MultipartConfig.java new file mode 100644 index 000000000000..baccad3e1992 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/annotation/MultipartConfig.java @@ -0,0 +1,19 @@ +// Generated automatically from javax.servlet.annotation.MultipartConfig for testing purposes + +package javax.servlet.annotation; + +import java.lang.annotation.Annotation; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +@Target(value={java.lang.annotation.ElementType.TYPE}) +public @interface MultipartConfig +{ + String location(); + int fileSizeThreshold(); + long maxFileSize(); + long maxRequestSize(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/ServletSecurity.java b/java/ql/test/stubs/test/javax/servlet/annotation/ServletSecurity.java new file mode 100644 index 000000000000..021b6c64c2ac --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/annotation/ServletSecurity.java @@ -0,0 +1,33 @@ +// Generated automatically from javax.servlet.annotation.ServletSecurity for testing purposes + +package javax.servlet.annotation; + +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import javax.servlet.annotation.HttpConstraint; +import javax.servlet.annotation.HttpMethodConstraint; + +@Documented +@Inherited +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +@Target(value={java.lang.annotation.ElementType.TYPE}) +public @interface ServletSecurity +{ + HttpConstraint value(); + HttpMethodConstraint[] httpMethodConstraints(); + static public enum EmptyRoleSemantic + { + DENY, PERMIT; + private EmptyRoleSemantic() {} + } + static public enum TransportGuarantee + { + CONFIDENTIAL, NONE; + private TransportGuarantee() {} + } +} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/WebInitParam.java b/java/ql/test/stubs/test/javax/servlet/annotation/WebInitParam.java new file mode 100644 index 000000000000..513c7d7053be --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/annotation/WebInitParam.java @@ -0,0 +1,20 @@ +// Generated automatically from javax.servlet.annotation.WebInitParam for testing purposes + +package javax.servlet.annotation; + +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Documented +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +@Target(value={java.lang.annotation.ElementType.TYPE}) +public @interface WebInitParam +{ + String description(); + String name(); + String value(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/WebServlet.java b/java/ql/test/stubs/test/javax/servlet/annotation/WebServlet.java new file mode 100644 index 000000000000..83b5d2e476ae --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/annotation/WebServlet.java @@ -0,0 +1,28 @@ +// Generated automatically from javax.servlet.annotation.WebServlet for testing purposes + +package javax.servlet.annotation; + +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import javax.servlet.annotation.WebInitParam; + +@Documented +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +@Target(value={java.lang.annotation.ElementType.TYPE}) +public @interface WebServlet +{ + String description(); + String displayName(); + String largeIcon(); + String name(); + String smallIcon(); + String[] urlPatterns(); + String[] value(); + WebInitParam[] initParams(); + boolean asyncSupported(); + int loadOnStartup(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/descriptor/JspConfigDescriptor.java b/java/ql/test/stubs/test/javax/servlet/descriptor/JspConfigDescriptor.java new file mode 100644 index 000000000000..8d93a4318d7e --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/descriptor/JspPropertyGroupDescriptor.java b/java/ql/test/stubs/test/javax/servlet/descriptor/JspPropertyGroupDescriptor.java new file mode 100644 index 000000000000..dd852fa10883 --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/descriptor/TaglibDescriptor.java b/java/ql/test/stubs/test/javax/servlet/descriptor/TaglibDescriptor.java new file mode 100644 index 000000000000..c3dd5c10473d --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/http/Cookie.java b/java/ql/test/stubs/test/javax/servlet/http/Cookie.java new file mode 100644 index 000000000000..b5a180029be6 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/Cookie.java @@ -0,0 +1,29 @@ +// Generated automatically from javax.servlet.http.Cookie for testing purposes + +package javax.servlet.http; + +import java.io.Serializable; + +public class Cookie implements Cloneable, Serializable +{ + protected Cookie() {} + public Cookie(String p0, String p1){} + public Object clone(){ return null; } + public String getComment(){ return null; } + public String getDomain(){ return null; } + public String getName(){ return null; } + 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){} + public void setValue(String p0){} + public void setVersion(int p0){} +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpServlet.java b/java/ql/test/stubs/test/javax/servlet/http/HttpServlet.java new file mode 100644 index 000000000000..1247f956d78c --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/HttpServlet.java @@ -0,0 +1,24 @@ +// Generated automatically from javax.servlet.http.HttpServlet for testing purposes + +package javax.servlet.http; + +import javax.servlet.GenericServlet; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +abstract public class HttpServlet extends GenericServlet +{ + protected long getLastModified(HttpServletRequest p0){ return 0; } + protected void doDelete(HttpServletRequest p0, HttpServletResponse p1){} + protected void doGet(HttpServletRequest p0, HttpServletResponse p1){} + protected void doHead(HttpServletRequest p0, HttpServletResponse p1){} + protected void doOptions(HttpServletRequest p0, HttpServletResponse p1){} + protected void doPost(HttpServletRequest p0, HttpServletResponse p1){} + protected void doPut(HttpServletRequest p0, HttpServletResponse p1){} + protected void doTrace(HttpServletRequest p0, HttpServletResponse p1){} + protected void service(HttpServletRequest p0, HttpServletResponse p1){} + public HttpServlet(){} + public void service(ServletRequest p0, ServletResponse p1){} +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpServletMapping.java b/java/ql/test/stubs/test/javax/servlet/http/HttpServletMapping.java new file mode 100644 index 000000000000..1b597f277734 --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/http/HttpServletRequest.java b/java/ql/test/stubs/test/javax/servlet/http/HttpServletRequest.java new file mode 100644 index 000000000000..8612c34fb695 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/HttpServletRequest.java @@ -0,0 +1,60 @@ +// Generated automatically from javax.servlet.http.HttpServletRequest 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.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.HttpUpgradeHandler; +import javax.servlet.http.Part; +import javax.servlet.http.PushBuilder; + +public interface HttpServletRequest extends ServletRequest +{ + T upgrade(java.lang.Class p0); + Collection getParts(); + Cookie[] getCookies(); + 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); + String getMethod(); + String getPathInfo(); + String getPathTranslated(); + String getQueryString(); + String getRemoteUser(); + String getRequestURI(); + 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/test/javax/servlet/http/HttpServletResponse.java b/java/ql/test/stubs/test/javax/servlet/http/HttpServletResponse.java new file mode 100644 index 000000000000..da902dbf30cf --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/http/HttpSession.java b/java/ql/test/stubs/test/javax/servlet/http/HttpSession.java new file mode 100644 index 000000000000..f8f455b14231 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/HttpSession.java @@ -0,0 +1,28 @@ +// Generated automatically from javax.servlet.http.HttpSession for testing purposes + +package javax.servlet.http; + +import java.util.Enumeration; +import javax.servlet.ServletContext; +import javax.servlet.http.HttpSessionContext; + +public interface HttpSession +{ + Enumeration getAttributeNames(); + HttpSessionContext getSessionContext(); + Object getAttribute(String p0); + Object getValue(String p0); + ServletContext getServletContext(); + String getId(); + String[] getValueNames(); + boolean isNew(); + int getMaxInactiveInterval(); + long getCreationTime(); + long getLastAccessedTime(); + void invalidate(); + void putValue(String p0, Object p1); + void removeAttribute(String p0); + void removeValue(String p0); + void setAttribute(String p0, Object p1); + void setMaxInactiveInterval(int p0); +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpSessionContext.java b/java/ql/test/stubs/test/javax/servlet/http/HttpSessionContext.java new file mode 100644 index 000000000000..97a77b483588 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/HttpSessionContext.java @@ -0,0 +1,12 @@ +// Generated automatically from javax.servlet.http.HttpSessionContext for testing purposes + +package javax.servlet.http; + +import java.util.Enumeration; +import javax.servlet.http.HttpSession; + +public interface HttpSessionContext +{ + Enumeration getIds(); + HttpSession getSession(String p0); +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpUpgradeHandler.java b/java/ql/test/stubs/test/javax/servlet/http/HttpUpgradeHandler.java new file mode 100644 index 000000000000..987d49dbde24 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/HttpUpgradeHandler.java @@ -0,0 +1,11 @@ +// Generated automatically from javax.servlet.http.HttpUpgradeHandler for testing purposes + +package javax.servlet.http; + +import javax.servlet.http.WebConnection; + +public interface HttpUpgradeHandler +{ + void destroy(); + void init(WebConnection p0); +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/MappingMatch.java b/java/ql/test/stubs/test/javax/servlet/http/MappingMatch.java new file mode 100644 index 000000000000..0432fd2ef7d3 --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/http/Part.java b/java/ql/test/stubs/test/javax/servlet/http/Part.java new file mode 100644 index 000000000000..a4e599748a56 --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/http/PushBuilder.java b/java/ql/test/stubs/test/javax/servlet/http/PushBuilder.java new file mode 100644 index 000000000000..195e2426a83c --- /dev/null +++ b/java/ql/test/stubs/test/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/test/javax/servlet/http/WebConnection.java b/java/ql/test/stubs/test/javax/servlet/http/WebConnection.java new file mode 100644 index 000000000000..5001c0464004 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/WebConnection.java @@ -0,0 +1,12 @@ +// Generated automatically from javax.servlet.http.WebConnection for testing purposes + +package javax.servlet.http; + +import javax.servlet.ServletInputStream; +import javax.servlet.ServletOutputStream; + +public interface WebConnection extends AutoCloseable +{ + ServletInputStream getInputStream(); + ServletOutputStream getOutputStream(); +} From a8efb92b9baa78ede300d3e5a2dc90e85d842733 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Wed, 25 Sep 2024 17:27:41 +0000 Subject: [PATCH 03/10] Simple Test --- .../dataflow/taintsources/App.java | 21 --------- .../dataflow/taintsources/FileUpload/App.java | 22 +++++++++ .../dataflow/taintsources/FileUpload/options | 1 + .../taintsources/FileUpload/remote.expected | 2 + .../taintsources/FileUpload/remote.ql | 47 +++++++++++++++++++ .../dataflow/taintsources/options | 2 +- 6 files changed, 73 insertions(+), 22 deletions(-) delete mode 100644 java/ql/test/library-tests/dataflow/taintsources/App.java create mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload/App.java create mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload/options create mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.expected create mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.ql diff --git a/java/ql/test/library-tests/dataflow/taintsources/App.java b/java/ql/test/library-tests/dataflow/taintsources/App.java deleted file mode 100644 index 73caade75250..000000000000 --- a/java/ql/test/library-tests/dataflow/taintsources/App.java +++ /dev/null @@ -1,21 +0,0 @@ -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.Part; - -/** - * Hello world! - */ -public class App { - - - -public class FileUploadServlet extends HttpServlet { - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { - Part filePart = request.getPart("file"); // Retrieves - sink(filePart.getName()); - - } -} -} \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/App.java b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/App.java new file mode 100644 index 000000000000..1e16c3bcbf8a --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/App.java @@ -0,0 +1,22 @@ +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.Part; + +public class App { + + private HttpServletRequest request; + private HttpServletResponse response; + private Part filePart; + + private static void sink(Object o) {} + + public void test() throws Exception { + sink(filePart.getContentType()); // $hasRemoteValueFlow + sink(filePart.getHeader("test")); // $hasRemoteValueFlow + sink(filePart.getInputStream()); // $hasRemoteValueFlow + sink(filePart.getHeaders("test")); // $hasRemoteValueFlow + //sink(filePart.getHeaderNames()); // $hasRemoteValueFlow + sink(filePart.getSubmittedFileName()); // $hasRemoteValueFlow + sink(filePart.getName()); // $hasRemoteValueFlow + } +} \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/options b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/options new file mode 100644 index 000000000000..be803cb38956 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/test \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.expected b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.expected new file mode 100644 index 000000000000..48de9172b362 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.ql b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.ql new file mode 100644 index 000000000000..ce466f6c6474 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.ql @@ -0,0 +1,47 @@ +import java +import semmle.code.java.dataflow.FlowSources +import TestUtilities.InlineExpectationsTest + +predicate isTestSink(DataFlow::Node n) { + exists(MethodCall ma | ma.getMethod().hasName("sink") | n.asExpr() = ma.getAnArgument()) +} + +module RemoteValueConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node n) { n instanceof RemoteFlowSource } + + predicate isSink(DataFlow::Node n) { isTestSink(n) } +} + +module RemoteValueFlow = DataFlow::Global; + +module RemoteTaintConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node n) { n instanceof RemoteFlowSource } + + predicate isSink(DataFlow::Node n) { isTestSink(n) } +} + +module RemoteTaintFlow = TaintTracking::Global; + +module RemoteFlowTest implements TestSig { + string getARelevantTag() { result = ["hasRemoteValueFlow", "hasRemoteTaintFlow"] } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "hasRemoteValueFlow" and + exists(DataFlow::Node sink | RemoteValueFlow::flowTo(sink) | + sink.getLocation() = location and + element = sink.toString() and + value = "" + ) + or + tag = "hasRemoteTaintFlow" and + exists(DataFlow::Node src, DataFlow::Node sink | + RemoteTaintFlow::flow(src, sink) and not RemoteValueFlow::flow(src, sink) + | + sink.getLocation() = location and + element = sink.toString() and + value = "" + ) + } +} + +import MakeTest diff --git a/java/ql/test/library-tests/dataflow/taintsources/options b/java/ql/test/library-tests/dataflow/taintsources/options index f2365fc973b8..c8249b05e38e 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/options +++ b/java/ql/test/library-tests/dataflow/taintsources/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263:${testdir}/../../../stubs/test \ No newline at end of file +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file From 6445074feab477f6b7b6cb4055f20f3b0d3033f3 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Wed, 25 Sep 2024 21:46:52 +0000 Subject: [PATCH 04/10] Fixed but errors still --- java/ql/lib/ext/javax.servlet.http.model.yml | 2 +- .../lib/ext/org.apache.commons.fileupload.yml | 15 ---- .../dataflow/taintsources/FileUpload.java | 39 +++++++++ .../dataflow/taintsources/FileUpload/App.java | 22 ----- .../dataflow/taintsources/FileUpload/options | 1 - .../taintsources/FileUpload/remote.expected | 2 - .../taintsources/FileUpload/remote.ql | 47 ----------- .../dataflow/taintsources/options | 2 +- .../commons/fileupload/FileItemStream.java | 14 ++++ .../test/javax/servlet/AsyncContext.java | 31 ------- .../stubs/test/javax/servlet/AsyncEvent.java | 20 ----- .../test/javax/servlet/AsyncListener.java | 14 ---- .../test/javax/servlet/DispatcherType.java | 10 --- .../test/stubs/test/javax/servlet/Filter.java | 15 ---- .../stubs/test/javax/servlet/FilterChain.java | 11 --- .../test/javax/servlet/FilterConfig.java | 14 ---- .../javax/servlet/FilterRegistration.java | 19 ----- .../test/javax/servlet/GenericServlet.java | 28 ------- .../javax/servlet/HttpConstraintElement.java | 16 ---- .../servlet/HttpMethodConstraintElement.java | 13 --- .../javax/servlet/MultipartConfigElement.java | 17 ---- .../test/javax/servlet/ReadListener.java | 12 --- .../test/javax/servlet/Registration.java | 20 ----- .../test/javax/servlet/RequestDispatcher.java | 30 ------- .../stubs/test/javax/servlet/Servlet.java | 16 ---- .../test/javax/servlet/ServletConfig.java | 14 ---- .../test/javax/servlet/ServletContext.java | 83 ------------------- .../test/javax/servlet/ServletException.java | 27 ------ .../javax/servlet/ServletInputStream.java | 15 ---- .../javax/servlet/ServletOutputStream.java | 28 ------- .../javax/servlet/ServletRegistration.java | 23 ----- .../test/javax/servlet/ServletRequest.java | 55 ------------ .../test/javax/servlet/ServletResponse.java | 27 ------ .../javax/servlet/ServletSecurityElement.java | 19 ----- .../javax/servlet/SessionCookieConfig.java | 22 ----- .../javax/servlet/SessionTrackingMode.java | 10 --- .../test/javax/servlet/WriteListener.java | 11 --- .../servlet/annotation/HttpConstraint.java | 18 ---- .../annotation/HttpMethodConstraint.java | 19 ----- .../servlet/annotation/MultipartConfig.java | 19 ----- .../servlet/annotation/ServletSecurity.java | 33 -------- .../servlet/annotation/WebInitParam.java | 20 ----- .../javax/servlet/annotation/WebServlet.java | 28 ------- .../descriptor/JspConfigDescriptor.java | 13 --- .../JspPropertyGroupDescriptor.java | 21 ----- .../servlet/descriptor/TaglibDescriptor.java | 10 --- .../stubs/test/javax/servlet/http/Cookie.java | 29 ------- .../test/javax/servlet/http/HttpServlet.java | 24 ------ .../servlet/http/HttpServletMapping.java | 13 --- .../servlet/http/HttpServletRequest.java | 60 -------------- .../servlet/http/HttpServletResponse.java | 77 ----------------- .../test/javax/servlet/http/HttpSession.java | 28 ------- .../servlet/http/HttpSessionContext.java | 12 --- .../servlet/http/HttpUpgradeHandler.java | 11 --- .../test/javax/servlet/http/MappingMatch.java | 10 --- .../stubs/test/javax/servlet/http/Part.java | 20 ----- .../test/javax/servlet/http/PushBuilder.java | 23 ----- .../javax/servlet/http/WebConnection.java | 12 --- 58 files changed, 55 insertions(+), 1209 deletions(-) delete mode 100644 java/ql/lib/ext/org.apache.commons.fileupload.yml create mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload.java delete mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload/App.java delete mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload/options delete mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.expected delete mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.ql create mode 100644 java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/FileItemStream.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/AsyncContext.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/AsyncEvent.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/AsyncListener.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/DispatcherType.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/Filter.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/FilterChain.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/FilterConfig.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/FilterRegistration.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/GenericServlet.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/HttpConstraintElement.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/HttpMethodConstraintElement.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/MultipartConfigElement.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ReadListener.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/Registration.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/RequestDispatcher.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/Servlet.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletConfig.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletContext.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletException.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletInputStream.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletOutputStream.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletRegistration.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletRequest.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletResponse.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletSecurityElement.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/SessionCookieConfig.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/SessionTrackingMode.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/WriteListener.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/HttpConstraint.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/HttpMethodConstraint.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/MultipartConfig.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/ServletSecurity.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/WebInitParam.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/WebServlet.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/descriptor/JspConfigDescriptor.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/descriptor/JspPropertyGroupDescriptor.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/descriptor/TaglibDescriptor.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/Cookie.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpServlet.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpServletMapping.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpServletRequest.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpServletResponse.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpSession.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpSessionContext.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpUpgradeHandler.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/MappingMatch.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/Part.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/PushBuilder.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/WebConnection.java diff --git a/java/ql/lib/ext/javax.servlet.http.model.yml b/java/ql/lib/ext/javax.servlet.http.model.yml index dd345ed3c3e0..46b9765a1fd4 100644 --- a/java/ql/lib/ext/javax.servlet.http.model.yml +++ b/java/ql/lib/ext/javax.servlet.http.model.yml @@ -25,7 +25,7 @@ extensions: - ["javax.servlet.http", "Part", False, "getHeader", "(String)", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "Part", False, "getSubmittedFileName", "()", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "Part", False, "getHeaders", "(String)", "", "ReturnValue", "remote", "manual"] - - ["javax.servlet.http", "Part", False, "getHeadersNames", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getHeaderNames", "()", "", "ReturnValue", "remote", "manual"] - addsTo: diff --git a/java/ql/lib/ext/org.apache.commons.fileupload.yml b/java/ql/lib/ext/org.apache.commons.fileupload.yml deleted file mode 100644 index dfa87cd22bb0..000000000000 --- a/java/ql/lib/ext/org.apache.commons.fileupload.yml +++ /dev/null @@ -1,15 +0,0 @@ -extensions: - - addsTo: - pack: codeql/java-all - extensible: sourceModel - data: - - ["org.apache.commons.fileupload", "FileItem", True, "getInputStream", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", True, "getFieldName", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", True, "getContentType", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", True, "getString", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", True, "getName", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", True, "get", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItemStream", True, "getContentType", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItemStream", True, "getFieldName", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItemStream", True, "getName", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItemStream", True, "openStream", "", "", "ReturnValue", "remote", "manual"] \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java b/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java new file mode 100644 index 000000000000..15c393b10826 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java @@ -0,0 +1,39 @@ +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.Part; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileItemStream; + +public class FileUpload { + + private HttpServletRequest request; + private HttpServletResponse response; + private Part filePart; + private FileItem fileItem; + private FileItemStream fileItemStream; + + private static void sink(Object o) {} + + public void test() throws Exception { + sink(filePart.getContentType()); // $ hasRemoteValueFlow + sink(filePart.getHeader("test")); // $ hasRemoteValueFlow + sink(filePart.getInputStream()); // $ hasRemoteValueFlow + sink(filePart.getHeaders("test")); // $ hasRemoteValueFlow + sink(filePart.getHeaderNames()); // $ hasRemoteValueFlow + sink(filePart.getSubmittedFileName()); // $ hasRemoteValueFlow + sink(filePart.getName()); // $ hasRemoteValueFlow + + sink(fileItem.getName()); // $ hasRemoteValueFlow + sink(fileItem.get()); // $ hasRemoteValueFlow + sink(fileItem.getString()); // $ hasRemoteValueFlow + sink(fileItem.getContentType()); // $ hasRemoteValueFlow + sink(fileItem.getName()); // $ hasRemoteValueFlow + + //These result in a compiler error when uncommented + //sink(fileItemStream) // $ hasRemoteValueFlow + //sink(fileItemStream.getFieldName()) // $ hasRemoteValueFlow + //sink(fileItemStream.getName()) // $ hasRemoteValueFlow + //sink(fileItemStream.openStream()) // $ hasRemoteValueFlow + + } +} \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/App.java b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/App.java deleted file mode 100644 index 1e16c3bcbf8a..000000000000 --- a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/App.java +++ /dev/null @@ -1,22 +0,0 @@ -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.Part; - -public class App { - - private HttpServletRequest request; - private HttpServletResponse response; - private Part filePart; - - private static void sink(Object o) {} - - public void test() throws Exception { - sink(filePart.getContentType()); // $hasRemoteValueFlow - sink(filePart.getHeader("test")); // $hasRemoteValueFlow - sink(filePart.getInputStream()); // $hasRemoteValueFlow - sink(filePart.getHeaders("test")); // $hasRemoteValueFlow - //sink(filePart.getHeaderNames()); // $hasRemoteValueFlow - sink(filePart.getSubmittedFileName()); // $hasRemoteValueFlow - sink(filePart.getName()); // $hasRemoteValueFlow - } -} \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/options b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/options deleted file mode 100644 index be803cb38956..000000000000 --- a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/options +++ /dev/null @@ -1 +0,0 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/test \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.expected b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.expected deleted file mode 100644 index 48de9172b362..000000000000 --- a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.expected +++ /dev/null @@ -1,2 +0,0 @@ -failures -testFailures diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.ql b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.ql deleted file mode 100644 index ce466f6c6474..000000000000 --- a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.ql +++ /dev/null @@ -1,47 +0,0 @@ -import java -import semmle.code.java.dataflow.FlowSources -import TestUtilities.InlineExpectationsTest - -predicate isTestSink(DataFlow::Node n) { - exists(MethodCall ma | ma.getMethod().hasName("sink") | n.asExpr() = ma.getAnArgument()) -} - -module RemoteValueConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node n) { n instanceof RemoteFlowSource } - - predicate isSink(DataFlow::Node n) { isTestSink(n) } -} - -module RemoteValueFlow = DataFlow::Global; - -module RemoteTaintConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node n) { n instanceof RemoteFlowSource } - - predicate isSink(DataFlow::Node n) { isTestSink(n) } -} - -module RemoteTaintFlow = TaintTracking::Global; - -module RemoteFlowTest implements TestSig { - string getARelevantTag() { result = ["hasRemoteValueFlow", "hasRemoteTaintFlow"] } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasRemoteValueFlow" and - exists(DataFlow::Node sink | RemoteValueFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - or - tag = "hasRemoteTaintFlow" and - exists(DataFlow::Node src, DataFlow::Node sink | - RemoteTaintFlow::flow(src, sink) and not RemoteValueFlow::flow(src, sink) - | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/library-tests/dataflow/taintsources/options b/java/ql/test/library-tests/dataflow/taintsources/options index c8249b05e38e..85e7b4a6454d 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/options +++ b/java/ql/test/library-tests/dataflow/taintsources/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file diff --git a/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/FileItemStream.java b/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/FileItemStream.java new file mode 100644 index 000000000000..b60c53fc95cc --- /dev/null +++ b/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/FileItemStream.java @@ -0,0 +1,14 @@ +package org.apache.commons.fileupload; + +import java.io.InputStream; +import org.apache.commons.fileupload.FileItemHeadersSupport; + + +public interface FileItemStream extends FileItemHeadersSupport +{ + InputStream openStream() throws java.io.IOException; + String getContentType(); + String getName(); + String getFieldName(); + boolean isFormField(); +} \ No newline at end of file diff --git a/java/ql/test/stubs/test/javax/servlet/AsyncContext.java b/java/ql/test/stubs/test/javax/servlet/AsyncContext.java deleted file mode 100644 index 70a39f55ac97..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/AsyncContext.java +++ /dev/null @@ -1,31 +0,0 @@ -// 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(java.lang.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/test/javax/servlet/AsyncEvent.java b/java/ql/test/stubs/test/javax/servlet/AsyncEvent.java deleted file mode 100644 index d7cb9c2b175a..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/AsyncEvent.java +++ /dev/null @@ -1,20 +0,0 @@ -// 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/test/javax/servlet/AsyncListener.java b/java/ql/test/stubs/test/javax/servlet/AsyncListener.java deleted file mode 100644 index 2723482f6683..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/AsyncListener.java +++ /dev/null @@ -1,14 +0,0 @@ -// 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/test/javax/servlet/DispatcherType.java b/java/ql/test/stubs/test/javax/servlet/DispatcherType.java deleted file mode 100644 index 2b7b44f328d6..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/DispatcherType.java +++ /dev/null @@ -1,10 +0,0 @@ -// 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/test/javax/servlet/Filter.java b/java/ql/test/stubs/test/javax/servlet/Filter.java deleted file mode 100644 index 64b9f9d73a89..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/Filter.java +++ /dev/null @@ -1,15 +0,0 @@ -// 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/test/javax/servlet/FilterChain.java b/java/ql/test/stubs/test/javax/servlet/FilterChain.java deleted file mode 100644 index f64ab7226841..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/FilterChain.java +++ /dev/null @@ -1,11 +0,0 @@ -// 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/test/javax/servlet/FilterConfig.java b/java/ql/test/stubs/test/javax/servlet/FilterConfig.java deleted file mode 100644 index 0e140c6680c9..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/FilterConfig.java +++ /dev/null @@ -1,14 +0,0 @@ -// 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/test/javax/servlet/FilterRegistration.java b/java/ql/test/stubs/test/javax/servlet/FilterRegistration.java deleted file mode 100644 index 6ad0739ceb6b..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/FilterRegistration.java +++ /dev/null @@ -1,19 +0,0 @@ -// 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/test/javax/servlet/GenericServlet.java b/java/ql/test/stubs/test/javax/servlet/GenericServlet.java deleted file mode 100644 index 5f7bdcda487b..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/GenericServlet.java +++ /dev/null @@ -1,28 +0,0 @@ -// Generated automatically from javax.servlet.GenericServlet for testing purposes - -package javax.servlet; - -import java.io.Serializable; -import java.util.Enumeration; -import javax.servlet.Servlet; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - -abstract public class GenericServlet implements Serializable, Servlet, ServletConfig -{ - public Enumeration getInitParameterNames(){ return null; } - public GenericServlet(){} - public ServletConfig getServletConfig(){ return null; } - public ServletContext getServletContext(){ return null; } - public String getInitParameter(String p0){ return null; } - public String getServletInfo(){ return null; } - public String getServletName(){ return null; } - public abstract void service(ServletRequest p0, ServletResponse p1); - public void destroy(){} - public void init(){} - public void init(ServletConfig p0){} - public void log(String p0){} - public void log(String p0, Throwable p1){} -} diff --git a/java/ql/test/stubs/test/javax/servlet/HttpConstraintElement.java b/java/ql/test/stubs/test/javax/servlet/HttpConstraintElement.java deleted file mode 100644 index 6598aa47cc5b..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/HttpConstraintElement.java +++ /dev/null @@ -1,16 +0,0 @@ -// 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/test/javax/servlet/HttpMethodConstraintElement.java b/java/ql/test/stubs/test/javax/servlet/HttpMethodConstraintElement.java deleted file mode 100644 index ddb525270045..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/HttpMethodConstraintElement.java +++ /dev/null @@ -1,13 +0,0 @@ -// 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/test/javax/servlet/MultipartConfigElement.java b/java/ql/test/stubs/test/javax/servlet/MultipartConfigElement.java deleted file mode 100644 index 8470d9a5317f..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/MultipartConfigElement.java +++ /dev/null @@ -1,17 +0,0 @@ -// 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/test/javax/servlet/ReadListener.java b/java/ql/test/stubs/test/javax/servlet/ReadListener.java deleted file mode 100644 index 367594ef7da6..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/ReadListener.java +++ /dev/null @@ -1,12 +0,0 @@ -// 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/test/javax/servlet/Registration.java b/java/ql/test/stubs/test/javax/servlet/Registration.java deleted file mode 100644 index 5d4095813ef6..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/Registration.java +++ /dev/null @@ -1,20 +0,0 @@ -// 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/test/javax/servlet/RequestDispatcher.java b/java/ql/test/stubs/test/javax/servlet/RequestDispatcher.java deleted file mode 100644 index ad017e4f5015..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/RequestDispatcher.java +++ /dev/null @@ -1,30 +0,0 @@ -// Generated automatically from javax.servlet.RequestDispatcher for testing purposes - -package javax.servlet; - -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - -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/test/javax/servlet/Servlet.java b/java/ql/test/stubs/test/javax/servlet/Servlet.java deleted file mode 100644 index 231c011a6f88..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/Servlet.java +++ /dev/null @@ -1,16 +0,0 @@ -// Generated automatically from javax.servlet.Servlet for testing purposes - -package javax.servlet; - -import javax.servlet.ServletConfig; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - -public interface Servlet -{ - ServletConfig getServletConfig(); - String getServletInfo(); - void destroy(); - void init(ServletConfig p0); - void service(ServletRequest p0, ServletResponse p1); -} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletConfig.java b/java/ql/test/stubs/test/javax/servlet/ServletConfig.java deleted file mode 100644 index c483c16ac4e8..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletConfig.java +++ /dev/null @@ -1,14 +0,0 @@ -// Generated automatically from javax.servlet.ServletConfig for testing purposes - -package javax.servlet; - -import java.util.Enumeration; -import javax.servlet.ServletContext; - -public interface ServletConfig -{ - Enumeration getInitParameterNames(); - ServletContext getServletContext(); - String getInitParameter(String p0); - String getServletName(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletContext.java b/java/ql/test/stubs/test/javax/servlet/ServletContext.java deleted file mode 100644 index 812393f61e99..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletContext.java +++ /dev/null @@ -1,83 +0,0 @@ -// Generated automatically from javax.servlet.ServletContext for testing purposes - -package javax.servlet; - -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 -{ - T createListener(java.lang.Class p0); - void addListener(T p0); - T createFilter(java.lang.Class p0); - T createServlet(java.lang.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); - 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/test/javax/servlet/ServletException.java b/java/ql/test/stubs/test/javax/servlet/ServletException.java deleted file mode 100644 index 812b1687665e..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletException.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * - * Copyright 2003-2004 The Apache Software Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Adapted from the Java Servlet API version 2.4 as available at - * http://search.maven.org/remotecontent?filepath=javax/servlet/servlet-api/2.4/servlet-api-2.4-sources.jar - * Only relevant stubs of this file have been retained for test purposes. - */ - -package javax.servlet; - -public class ServletException extends Exception { -} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletInputStream.java b/java/ql/test/stubs/test/javax/servlet/ServletInputStream.java deleted file mode 100644 index 31034066970c..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletInputStream.java +++ /dev/null @@ -1,15 +0,0 @@ -// Generated automatically from javax.servlet.ServletInputStream for testing purposes - -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/test/javax/servlet/ServletOutputStream.java b/java/ql/test/stubs/test/javax/servlet/ServletOutputStream.java deleted file mode 100644 index 52a2162c9eb3..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletOutputStream.java +++ /dev/null @@ -1,28 +0,0 @@ -// Generated automatically from javax.servlet.ServletOutputStream for testing purposes - -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){} - public void print(double p0){} - public void print(float p0){} - public void print(int p0){} - public void print(long p0){} - public void println(){} - public void println(String p0){} - public void println(boolean p0){} - public void println(char p0){} - public void println(double p0){} - public void println(float p0){} - public void println(int p0){} - public void println(long p0){} -} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletRegistration.java b/java/ql/test/stubs/test/javax/servlet/ServletRegistration.java deleted file mode 100644 index a1cc66f2d190..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletRegistration.java +++ /dev/null @@ -1,23 +0,0 @@ -// 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/test/javax/servlet/ServletRequest.java b/java/ql/test/stubs/test/javax/servlet/ServletRequest.java deleted file mode 100644 index fc0db462cc00..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletRequest.java +++ /dev/null @@ -1,55 +0,0 @@ -// Generated automatically from javax.servlet.ServletRequest 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.ServletResponse; - -public interface ServletRequest -{ - AsyncContext getAsyncContext(); - AsyncContext startAsync(); - AsyncContext startAsync(ServletRequest p0, ServletResponse p1); - BufferedReader getReader(); - DispatcherType getDispatcherType(); - Enumeration getLocales(); - Enumeration getAttributeNames(); - Enumeration getParameterNames(); - Locale getLocale(); - Map getParameterMap(); - Object getAttribute(String p0); - RequestDispatcher getRequestDispatcher(String p0); - ServletContext getServletContext(); - ServletInputStream getInputStream(); - String getCharacterEncoding(); - String getContentType(); - String getLocalAddr(); - String getLocalName(); - String getParameter(String p0); - String getProtocol(); - String getRealPath(String p0); - String getRemoteAddr(); - String getRemoteHost(); - 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/test/javax/servlet/ServletResponse.java b/java/ql/test/stubs/test/javax/servlet/ServletResponse.java deleted file mode 100644 index db6610bc15d2..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -// Generated automatically from javax.servlet.ServletResponse for testing purposes - -package javax.servlet; - -import java.io.PrintWriter; -import java.util.Locale; -import javax.servlet.ServletOutputStream; - -public interface ServletResponse -{ - Locale getLocale(); - PrintWriter getWriter(); - ServletOutputStream getOutputStream(); - String getCharacterEncoding(); - String getContentType(); - boolean isCommitted(); - int getBufferSize(); - void flushBuffer(); - void reset(); - void resetBuffer(); - 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/test/javax/servlet/ServletSecurityElement.java b/java/ql/test/stubs/test/javax/servlet/ServletSecurityElement.java deleted file mode 100644 index def47937391b..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletSecurityElement.java +++ /dev/null @@ -1,19 +0,0 @@ -// 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/test/javax/servlet/SessionCookieConfig.java b/java/ql/test/stubs/test/javax/servlet/SessionCookieConfig.java deleted file mode 100644 index 4cae9a11f305..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/SessionCookieConfig.java +++ /dev/null @@ -1,22 +0,0 @@ -// 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/test/javax/servlet/SessionTrackingMode.java b/java/ql/test/stubs/test/javax/servlet/SessionTrackingMode.java deleted file mode 100644 index 684ac40c56fb..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/SessionTrackingMode.java +++ /dev/null @@ -1,10 +0,0 @@ -// 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/test/javax/servlet/WriteListener.java b/java/ql/test/stubs/test/javax/servlet/WriteListener.java deleted file mode 100644 index 24fe504271c6..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/WriteListener.java +++ /dev/null @@ -1,11 +0,0 @@ -// 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/test/javax/servlet/annotation/HttpConstraint.java b/java/ql/test/stubs/test/javax/servlet/annotation/HttpConstraint.java deleted file mode 100644 index f47efc627448..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/annotation/HttpConstraint.java +++ /dev/null @@ -1,18 +0,0 @@ -// Generated automatically from javax.servlet.annotation.HttpConstraint for testing purposes - -package javax.servlet.annotation; - -import java.lang.annotation.Annotation; -import java.lang.annotation.Documented; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import javax.servlet.annotation.ServletSecurity; - -@Documented -@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) -public @interface HttpConstraint -{ - ServletSecurity.EmptyRoleSemantic value(); - ServletSecurity.TransportGuarantee transportGuarantee(); - String[] rolesAllowed(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/HttpMethodConstraint.java b/java/ql/test/stubs/test/javax/servlet/annotation/HttpMethodConstraint.java deleted file mode 100644 index 288f4651018b..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/annotation/HttpMethodConstraint.java +++ /dev/null @@ -1,19 +0,0 @@ -// Generated automatically from javax.servlet.annotation.HttpMethodConstraint for testing purposes - -package javax.servlet.annotation; - -import java.lang.annotation.Annotation; -import java.lang.annotation.Documented; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import javax.servlet.annotation.ServletSecurity; - -@Documented -@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) -public @interface HttpMethodConstraint -{ - ServletSecurity.EmptyRoleSemantic emptyRoleSemantic(); - ServletSecurity.TransportGuarantee transportGuarantee(); - String value(); - String[] rolesAllowed(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/MultipartConfig.java b/java/ql/test/stubs/test/javax/servlet/annotation/MultipartConfig.java deleted file mode 100644 index baccad3e1992..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/annotation/MultipartConfig.java +++ /dev/null @@ -1,19 +0,0 @@ -// Generated automatically from javax.servlet.annotation.MultipartConfig for testing purposes - -package javax.servlet.annotation; - -import java.lang.annotation.Annotation; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) -@Target(value={java.lang.annotation.ElementType.TYPE}) -public @interface MultipartConfig -{ - String location(); - int fileSizeThreshold(); - long maxFileSize(); - long maxRequestSize(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/ServletSecurity.java b/java/ql/test/stubs/test/javax/servlet/annotation/ServletSecurity.java deleted file mode 100644 index 021b6c64c2ac..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/annotation/ServletSecurity.java +++ /dev/null @@ -1,33 +0,0 @@ -// Generated automatically from javax.servlet.annotation.ServletSecurity for testing purposes - -package javax.servlet.annotation; - -import java.lang.annotation.Annotation; -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Inherited; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import javax.servlet.annotation.HttpConstraint; -import javax.servlet.annotation.HttpMethodConstraint; - -@Documented -@Inherited -@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) -@Target(value={java.lang.annotation.ElementType.TYPE}) -public @interface ServletSecurity -{ - HttpConstraint value(); - HttpMethodConstraint[] httpMethodConstraints(); - static public enum EmptyRoleSemantic - { - DENY, PERMIT; - private EmptyRoleSemantic() {} - } - static public enum TransportGuarantee - { - CONFIDENTIAL, NONE; - private TransportGuarantee() {} - } -} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/WebInitParam.java b/java/ql/test/stubs/test/javax/servlet/annotation/WebInitParam.java deleted file mode 100644 index 513c7d7053be..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/annotation/WebInitParam.java +++ /dev/null @@ -1,20 +0,0 @@ -// Generated automatically from javax.servlet.annotation.WebInitParam for testing purposes - -package javax.servlet.annotation; - -import java.lang.annotation.Annotation; -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Documented -@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) -@Target(value={java.lang.annotation.ElementType.TYPE}) -public @interface WebInitParam -{ - String description(); - String name(); - String value(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/WebServlet.java b/java/ql/test/stubs/test/javax/servlet/annotation/WebServlet.java deleted file mode 100644 index 83b5d2e476ae..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/annotation/WebServlet.java +++ /dev/null @@ -1,28 +0,0 @@ -// Generated automatically from javax.servlet.annotation.WebServlet for testing purposes - -package javax.servlet.annotation; - -import java.lang.annotation.Annotation; -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import javax.servlet.annotation.WebInitParam; - -@Documented -@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) -@Target(value={java.lang.annotation.ElementType.TYPE}) -public @interface WebServlet -{ - String description(); - String displayName(); - String largeIcon(); - String name(); - String smallIcon(); - String[] urlPatterns(); - String[] value(); - WebInitParam[] initParams(); - boolean asyncSupported(); - int loadOnStartup(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/descriptor/JspConfigDescriptor.java b/java/ql/test/stubs/test/javax/servlet/descriptor/JspConfigDescriptor.java deleted file mode 100644 index 8d93a4318d7e..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/descriptor/JspConfigDescriptor.java +++ /dev/null @@ -1,13 +0,0 @@ -// 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/test/javax/servlet/descriptor/JspPropertyGroupDescriptor.java b/java/ql/test/stubs/test/javax/servlet/descriptor/JspPropertyGroupDescriptor.java deleted file mode 100644 index dd852fa10883..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/descriptor/JspPropertyGroupDescriptor.java +++ /dev/null @@ -1,21 +0,0 @@ -// 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/test/javax/servlet/descriptor/TaglibDescriptor.java b/java/ql/test/stubs/test/javax/servlet/descriptor/TaglibDescriptor.java deleted file mode 100644 index c3dd5c10473d..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/descriptor/TaglibDescriptor.java +++ /dev/null @@ -1,10 +0,0 @@ -// 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/test/javax/servlet/http/Cookie.java b/java/ql/test/stubs/test/javax/servlet/http/Cookie.java deleted file mode 100644 index b5a180029be6..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/Cookie.java +++ /dev/null @@ -1,29 +0,0 @@ -// Generated automatically from javax.servlet.http.Cookie for testing purposes - -package javax.servlet.http; - -import java.io.Serializable; - -public class Cookie implements Cloneable, Serializable -{ - protected Cookie() {} - public Cookie(String p0, String p1){} - public Object clone(){ return null; } - public String getComment(){ return null; } - public String getDomain(){ return null; } - public String getName(){ return null; } - 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){} - public void setValue(String p0){} - public void setVersion(int p0){} -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpServlet.java b/java/ql/test/stubs/test/javax/servlet/http/HttpServlet.java deleted file mode 100644 index 1247f956d78c..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/HttpServlet.java +++ /dev/null @@ -1,24 +0,0 @@ -// Generated automatically from javax.servlet.http.HttpServlet for testing purposes - -package javax.servlet.http; - -import javax.servlet.GenericServlet; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -abstract public class HttpServlet extends GenericServlet -{ - protected long getLastModified(HttpServletRequest p0){ return 0; } - protected void doDelete(HttpServletRequest p0, HttpServletResponse p1){} - protected void doGet(HttpServletRequest p0, HttpServletResponse p1){} - protected void doHead(HttpServletRequest p0, HttpServletResponse p1){} - protected void doOptions(HttpServletRequest p0, HttpServletResponse p1){} - protected void doPost(HttpServletRequest p0, HttpServletResponse p1){} - protected void doPut(HttpServletRequest p0, HttpServletResponse p1){} - protected void doTrace(HttpServletRequest p0, HttpServletResponse p1){} - protected void service(HttpServletRequest p0, HttpServletResponse p1){} - public HttpServlet(){} - public void service(ServletRequest p0, ServletResponse p1){} -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpServletMapping.java b/java/ql/test/stubs/test/javax/servlet/http/HttpServletMapping.java deleted file mode 100644 index 1b597f277734..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/HttpServletMapping.java +++ /dev/null @@ -1,13 +0,0 @@ -// 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/test/javax/servlet/http/HttpServletRequest.java b/java/ql/test/stubs/test/javax/servlet/http/HttpServletRequest.java deleted file mode 100644 index 8612c34fb695..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/HttpServletRequest.java +++ /dev/null @@ -1,60 +0,0 @@ -// Generated automatically from javax.servlet.http.HttpServletRequest 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.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.HttpUpgradeHandler; -import javax.servlet.http.Part; -import javax.servlet.http.PushBuilder; - -public interface HttpServletRequest extends ServletRequest -{ - T upgrade(java.lang.Class p0); - Collection getParts(); - Cookie[] getCookies(); - 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); - String getMethod(); - String getPathInfo(); - String getPathTranslated(); - String getQueryString(); - String getRemoteUser(); - String getRequestURI(); - 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/test/javax/servlet/http/HttpServletResponse.java b/java/ql/test/stubs/test/javax/servlet/http/HttpServletResponse.java deleted file mode 100644 index da902dbf30cf..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/HttpServletResponse.java +++ /dev/null @@ -1,77 +0,0 @@ -// 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/test/javax/servlet/http/HttpSession.java b/java/ql/test/stubs/test/javax/servlet/http/HttpSession.java deleted file mode 100644 index f8f455b14231..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/HttpSession.java +++ /dev/null @@ -1,28 +0,0 @@ -// Generated automatically from javax.servlet.http.HttpSession for testing purposes - -package javax.servlet.http; - -import java.util.Enumeration; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpSessionContext; - -public interface HttpSession -{ - Enumeration getAttributeNames(); - HttpSessionContext getSessionContext(); - Object getAttribute(String p0); - Object getValue(String p0); - ServletContext getServletContext(); - String getId(); - String[] getValueNames(); - boolean isNew(); - int getMaxInactiveInterval(); - long getCreationTime(); - long getLastAccessedTime(); - void invalidate(); - void putValue(String p0, Object p1); - void removeAttribute(String p0); - void removeValue(String p0); - void setAttribute(String p0, Object p1); - void setMaxInactiveInterval(int p0); -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpSessionContext.java b/java/ql/test/stubs/test/javax/servlet/http/HttpSessionContext.java deleted file mode 100644 index 97a77b483588..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/HttpSessionContext.java +++ /dev/null @@ -1,12 +0,0 @@ -// Generated automatically from javax.servlet.http.HttpSessionContext for testing purposes - -package javax.servlet.http; - -import java.util.Enumeration; -import javax.servlet.http.HttpSession; - -public interface HttpSessionContext -{ - Enumeration getIds(); - HttpSession getSession(String p0); -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpUpgradeHandler.java b/java/ql/test/stubs/test/javax/servlet/http/HttpUpgradeHandler.java deleted file mode 100644 index 987d49dbde24..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/HttpUpgradeHandler.java +++ /dev/null @@ -1,11 +0,0 @@ -// Generated automatically from javax.servlet.http.HttpUpgradeHandler for testing purposes - -package javax.servlet.http; - -import javax.servlet.http.WebConnection; - -public interface HttpUpgradeHandler -{ - void destroy(); - void init(WebConnection p0); -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/MappingMatch.java b/java/ql/test/stubs/test/javax/servlet/http/MappingMatch.java deleted file mode 100644 index 0432fd2ef7d3..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/MappingMatch.java +++ /dev/null @@ -1,10 +0,0 @@ -// 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/test/javax/servlet/http/Part.java b/java/ql/test/stubs/test/javax/servlet/http/Part.java deleted file mode 100644 index a4e599748a56..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/Part.java +++ /dev/null @@ -1,20 +0,0 @@ -// 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/test/javax/servlet/http/PushBuilder.java b/java/ql/test/stubs/test/javax/servlet/http/PushBuilder.java deleted file mode 100644 index 195e2426a83c..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/PushBuilder.java +++ /dev/null @@ -1,23 +0,0 @@ -// 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/test/javax/servlet/http/WebConnection.java b/java/ql/test/stubs/test/javax/servlet/http/WebConnection.java deleted file mode 100644 index 5001c0464004..000000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/WebConnection.java +++ /dev/null @@ -1,12 +0,0 @@ -// Generated automatically from javax.servlet.http.WebConnection for testing purposes - -package javax.servlet.http; - -import javax.servlet.ServletInputStream; -import javax.servlet.ServletOutputStream; - -public interface WebConnection extends AutoCloseable -{ - ServletInputStream getInputStream(); - ServletOutputStream getOutputStream(); -} From 1b5299de5afa5e8b0280ca1ffde879c18f855be9 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Wed, 25 Sep 2024 22:00:42 +0000 Subject: [PATCH 05/10] Forgot something --- .../ext/org.apache.commons.fileupload.model.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 java/ql/lib/ext/org.apache.commons.fileupload.model.yml diff --git a/java/ql/lib/ext/org.apache.commons.fileupload.model.yml b/java/ql/lib/ext/org.apache.commons.fileupload.model.yml new file mode 100644 index 000000000000..1b68b8e8c756 --- /dev/null +++ b/java/ql/lib/ext/org.apache.commons.fileupload.model.yml @@ -0,0 +1,16 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["org.apache.commons.fileupload", "FileItem", True, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getFieldName", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", False, "getString", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getName", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getName", "(String)", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "get", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "getFieldName", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "getName", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "openStream", "()", "", "ReturnValue", "remote", "manual"] \ No newline at end of file From f0560458af6ea4f7190d23a49679280c9acb573c Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Fri, 27 Sep 2024 19:24:40 +0000 Subject: [PATCH 06/10] Finished up --- .../ql/lib/ext/jakarta.servlet.http.model.yml | 16 ++-- .../org.apache.commons.fileupload.model.yml | 2 +- .../dataflow/taintsources/FileUpload.java | 21 +++-- .../dataflow/taintsources/options | 2 +- .../jakarta/servlet/AsyncContext.java | 31 ++++++++ .../jakarta/servlet/AsyncEvent.java | 20 +++++ .../jakarta/servlet/AsyncListener.java | 14 ++++ .../jakarta/servlet/DispatcherType.java | 10 +++ .../jakarta/servlet/Filter.java | 15 ++++ .../jakarta/servlet/FilterChain.java | 11 +++ .../jakarta/servlet/FilterConfig.java | 14 ++++ .../jakarta/servlet/FilterRegistration.java | 19 +++++ .../servlet/HttpConstraintElement.java | 16 ++++ .../servlet/HttpMethodConstraintElement.java | 13 +++ .../servlet/MultipartConfigElement.java | 17 ++++ .../jakarta/servlet/ReadListener.java | 12 +++ .../jakarta/servlet/Registration.java | 20 +++++ .../jakarta/servlet/RequestDispatcher.java | 30 +++++++ .../jakarta/servlet/Servlet.java | 16 ++++ .../jakarta/servlet/ServletConfig.java | 14 ++++ .../jakarta/servlet/ServletConnection.java | 12 +++ .../jakarta/servlet/ServletContext.java | 79 +++++++++++++++++++ .../jakarta/servlet/ServletInputStream.java | 15 ++++ .../jakarta/servlet/ServletOutputStream.java | 28 +++++++ .../jakarta/servlet/ServletRegistration.java | 23 ++++++ .../jakarta/servlet/ServletRequest.java | 58 ++++++++++++++ .../jakarta/servlet/ServletResponse.java | 27 +++++++ .../servlet/ServletSecurityElement.java | 19 +++++ .../jakarta/servlet/SessionCookieConfig.java | 26 ++++++ .../jakarta/servlet/SessionTrackingMode.java | 10 +++ .../jakarta/servlet/WriteListener.java | 11 +++ .../servlet/annotation/HttpConstraint.java | 18 +++++ .../annotation/HttpMethodConstraint.java | 19 +++++ .../servlet/annotation/MultipartConfig.java | 19 +++++ .../servlet/annotation/ServletSecurity.java | 33 ++++++++ .../descriptor/JspConfigDescriptor.java | 13 +++ .../JspPropertyGroupDescriptor.java | 22 ++++++ .../servlet/descriptor/TaglibDescriptor.java | 10 +++ .../jakarta/servlet/http/Cookie.java | 36 +++++++++ .../servlet/http/HttpServletMapping.java | 13 +++ .../servlet/http/HttpServletRequest.java | 59 ++++++++++++++ .../servlet/http/HttpServletResponse.java | 74 +++++++++++++++++ .../jakarta/servlet/http/HttpSession.java | 22 ++++++ .../servlet/http/HttpUpgradeHandler.java | 11 +++ .../jakarta/servlet/http/MappingMatch.java | 10 +++ .../jakarta/servlet/http/Part.java | 20 +++++ .../jakarta/servlet/http/PushBuilder.java | 23 ++++++ .../jakarta/servlet/http/WebConnection.java | 12 +++ 48 files changed, 1018 insertions(+), 17 deletions(-) create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncContext.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncEvent.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncListener.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/DispatcherType.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Filter.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterChain.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterConfig.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterRegistration.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpConstraintElement.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpMethodConstraintElement.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/MultipartConfigElement.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ReadListener.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Registration.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/RequestDispatcher.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Servlet.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConfig.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConnection.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletContext.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletInputStream.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletOutputStream.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRegistration.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRequest.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletResponse.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletSecurityElement.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionCookieConfig.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionTrackingMode.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/WriteListener.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpConstraint.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpMethodConstraint.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/MultipartConfig.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/ServletSecurity.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspConfigDescriptor.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspPropertyGroupDescriptor.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/TaglibDescriptor.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Cookie.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletMapping.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletRequest.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletResponse.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpSession.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpUpgradeHandler.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/MappingMatch.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Part.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/PushBuilder.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/WebConnection.java diff --git a/java/ql/lib/ext/jakarta.servlet.http.model.yml b/java/ql/lib/ext/jakarta.servlet.http.model.yml index c1c55bddb9ec..ba461a181de2 100644 --- a/java/ql/lib/ext/jakarta.servlet.http.model.yml +++ b/java/ql/lib/ext/jakarta.servlet.http.model.yml @@ -3,11 +3,11 @@ extensions: pack: codeql/java-all extensible: sourceModel data: - - ["jakarta.servlet.http", "HttpServletRequest", True, "getServletPath", "", "", "ReturnValue", "remote", "manual"] - - ["jakarta.servlet.http", "Part", True, "getInputStream", "", "()", "ReturnValue", "remote", "manual"] - - ["jakarta.servlet.http", "Part", True, "getName", "", "()", "ReturnValue", "remote", "manual"] - - ["jakarta.servlet.http", "Part", True, "getContentType", "", "()", "ReturnValue", "remote", "manual"] - - ["jakarta.servlet.http", "Part", True, "getHeader", "", "(String)", "ReturnValue", "remote", "manual"] - - ["jakarta.servlet.http", "Part", True, "getHeaders", "", "(String)", "ReturnValue", "remote", "manual"] - - ["jakarta.servlet.http", "Part", True, "getHeaderNames", "", "()", "ReturnValue", "remote", "manual"] - - ["jakarta.servlet.http", "Part", True, "getSubmittedFileName", "", "()", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "HttpServletRequest", True, "getServletPath", "()", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getName", "()", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getHeader", "(String)", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getHeaders", "(String)", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getHeaderNames", "()", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getSubmittedFileName", "()", "", "ReturnValue", "remote", "manual"] diff --git a/java/ql/lib/ext/org.apache.commons.fileupload.model.yml b/java/ql/lib/ext/org.apache.commons.fileupload.model.yml index 1b68b8e8c756..228abadcc3e6 100644 --- a/java/ql/lib/ext/org.apache.commons.fileupload.model.yml +++ b/java/ql/lib/ext/org.apache.commons.fileupload.model.yml @@ -6,7 +6,7 @@ extensions: - ["org.apache.commons.fileupload", "FileItem", True, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItem", True, "getFieldName", "()", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItem", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", False, "getString", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getString", "()", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItem", True, "getName", "()", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItem", True, "getName", "(String)", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItem", True, "get", "()", "", "ReturnValue", "remote", "manual"] diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java b/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java index 15c393b10826..29437a4ab18c 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java +++ b/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java @@ -1,16 +1,17 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.Part; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemStream; + public class FileUpload { private HttpServletRequest request; private HttpServletResponse response; - private Part filePart; + private javax.servlet.http.Part filePart; private FileItem fileItem; private FileItemStream fileItemStream; + private jakarta.servlet.http.Part jakartaPart; private static void sink(Object o) {} @@ -29,11 +30,17 @@ public void test() throws Exception { sink(fileItem.getContentType()); // $ hasRemoteValueFlow sink(fileItem.getName()); // $ hasRemoteValueFlow - //These result in a compiler error when uncommented - //sink(fileItemStream) // $ hasRemoteValueFlow - //sink(fileItemStream.getFieldName()) // $ hasRemoteValueFlow - //sink(fileItemStream.getName()) // $ hasRemoteValueFlow - //sink(fileItemStream.openStream()) // $ hasRemoteValueFlow + sink(fileItemStream.getFieldName()); // $ hasRemoteValueFlow + sink(fileItemStream.getName()); // $ hasRemoteValueFlow + sink(fileItemStream.openStream()); // $ hasRemoteValueFlow + + sink(jakartaPart.getContentType()); // $ hasRemoteValueFlow + sink(jakartaPart.getHeader("test")); // $ hasRemoteValueFlow + sink(jakartaPart.getInputStream()); // $ hasRemoteValueFlow + sink(jakartaPart.getHeaders("test")); // $ hasRemoteValueFlow + sink(jakartaPart.getHeaderNames()); // $ hasRemoteValueFlow + sink(jakartaPart.getSubmittedFileName()); // $ hasRemoteValueFlow + sink(jakartaPart.getName()); // $ hasRemoteValueFlow } } \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/options b/java/ql/test/library-tests/dataflow/taintsources/options index 85e7b4a6454d..69d482d20136 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/options +++ b/java/ql/test/library-tests/dataflow/taintsources/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/jakarta.servlet-api-6.0.0:${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncContext.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncContext.java new file mode 100644 index 000000000000..2dd7f0043a1c --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncContext.java @@ -0,0 +1,31 @@ +// Generated automatically from jakarta.servlet.AsyncContext for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.AsyncListener; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; + +public interface AsyncContext +{ + T createListener(java.lang.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/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncEvent.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncEvent.java new file mode 100644 index 000000000000..cf67716e25d1 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncEvent.java @@ -0,0 +1,20 @@ +// Generated automatically from jakarta.servlet.AsyncEvent for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.AsyncContext; +import jakarta.servlet.ServletRequest; +import jakarta.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/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncListener.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncListener.java new file mode 100644 index 000000000000..312f16c7fe43 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncListener.java @@ -0,0 +1,14 @@ +// Generated automatically from jakarta.servlet.AsyncListener for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.AsyncEvent; +import java.util.EventListener; + +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/jakarta.servlet-api-6.0.0/jakarta/servlet/DispatcherType.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/DispatcherType.java new file mode 100644 index 000000000000..f66519259c3c --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/DispatcherType.java @@ -0,0 +1,10 @@ +// Generated automatically from jakarta.servlet.DispatcherType for testing purposes + +package jakarta.servlet; + + +public enum DispatcherType +{ + ASYNC, ERROR, FORWARD, INCLUDE, REQUEST; + private DispatcherType() {} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Filter.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Filter.java new file mode 100644 index 000000000000..60ed2c9e4b21 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Filter.java @@ -0,0 +1,15 @@ +// Generated automatically from jakarta.servlet.Filter for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.FilterChain; +import jakarta.servlet.FilterConfig; +import jakarta.servlet.ServletRequest; +import jakarta.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/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterChain.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterChain.java new file mode 100644 index 000000000000..d6943485a81c --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterChain.java @@ -0,0 +1,11 @@ +// Generated automatically from jakarta.servlet.FilterChain for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; + +public interface FilterChain +{ + void doFilter(ServletRequest p0, ServletResponse p1); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterConfig.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterConfig.java new file mode 100644 index 000000000000..46f0bbca10c8 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterConfig.java @@ -0,0 +1,14 @@ +// Generated automatically from jakarta.servlet.FilterConfig for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletContext; +import java.util.Enumeration; + +public interface FilterConfig +{ + Enumeration getInitParameterNames(); + ServletContext getServletContext(); + String getFilterName(); + String getInitParameter(String p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterRegistration.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterRegistration.java new file mode 100644 index 000000000000..e6963bbe10c2 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterRegistration.java @@ -0,0 +1,19 @@ +// Generated automatically from jakarta.servlet.FilterRegistration for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.DispatcherType; +import jakarta.servlet.Registration; +import java.util.Collection; +import java.util.EnumSet; + +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/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpConstraintElement.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpConstraintElement.java new file mode 100644 index 000000000000..7c35c7647da4 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpConstraintElement.java @@ -0,0 +1,16 @@ +// Generated automatically from jakarta.servlet.HttpConstraintElement for testing purposes + +package jakarta.servlet; + +import jakarta.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/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpMethodConstraintElement.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpMethodConstraintElement.java new file mode 100644 index 000000000000..784e0a70c60a --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpMethodConstraintElement.java @@ -0,0 +1,13 @@ +// Generated automatically from jakarta.servlet.HttpMethodConstraintElement for testing purposes + +package jakarta.servlet; + +import jakarta.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/jakarta.servlet-api-6.0.0/jakarta/servlet/MultipartConfigElement.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/MultipartConfigElement.java new file mode 100644 index 000000000000..e92e0cd1ce89 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/MultipartConfigElement.java @@ -0,0 +1,17 @@ +// Generated automatically from jakarta.servlet.MultipartConfigElement for testing purposes + +package jakarta.servlet; + +import jakarta.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/jakarta.servlet-api-6.0.0/jakarta/servlet/ReadListener.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ReadListener.java new file mode 100644 index 000000000000..d3bd6b6406e0 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ReadListener.java @@ -0,0 +1,12 @@ +// Generated automatically from jakarta.servlet.ReadListener for testing purposes + +package jakarta.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/jakarta.servlet-api-6.0.0/jakarta/servlet/Registration.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Registration.java new file mode 100644 index 000000000000..ed28c2fd90c4 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Registration.java @@ -0,0 +1,20 @@ +// Generated automatically from jakarta.servlet.Registration for testing purposes + +package jakarta.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/jakarta.servlet-api-6.0.0/jakarta/servlet/RequestDispatcher.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/RequestDispatcher.java new file mode 100644 index 000000000000..261772a868c3 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/RequestDispatcher.java @@ -0,0 +1,30 @@ +// Generated automatically from jakarta.servlet.RequestDispatcher for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; + +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/jakarta.servlet-api-6.0.0/jakarta/servlet/Servlet.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Servlet.java new file mode 100644 index 000000000000..23fba12646f6 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Servlet.java @@ -0,0 +1,16 @@ +// Generated automatically from jakarta.servlet.Servlet for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletConfig; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; + +public interface Servlet +{ + ServletConfig getServletConfig(); + String getServletInfo(); + void destroy(); + void init(ServletConfig p0); + void service(ServletRequest p0, ServletResponse p1); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConfig.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConfig.java new file mode 100644 index 000000000000..1f914cdb1deb --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConfig.java @@ -0,0 +1,14 @@ +// Generated automatically from jakarta.servlet.ServletConfig for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletContext; +import java.util.Enumeration; + +public interface ServletConfig +{ + Enumeration getInitParameterNames(); + ServletContext getServletContext(); + String getInitParameter(String p0); + String getServletName(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConnection.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConnection.java new file mode 100644 index 000000000000..927d47e6c428 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConnection.java @@ -0,0 +1,12 @@ +// Generated automatically from jakarta.servlet.ServletConnection for testing purposes + +package jakarta.servlet; + + +public interface ServletConnection +{ + String getConnectionId(); + String getProtocol(); + String getProtocolConnectionId(); + boolean isSecure(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletContext.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletContext.java new file mode 100644 index 000000000000..df05b77fd0fa --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletContext.java @@ -0,0 +1,79 @@ +// Generated automatically from jakarta.servlet.ServletContext for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.Filter; +import jakarta.servlet.FilterRegistration; +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletRegistration; +import jakarta.servlet.SessionCookieConfig; +import jakarta.servlet.SessionTrackingMode; +import jakarta.servlet.descriptor.JspConfigDescriptor; +import java.io.InputStream; +import java.net.URL; +import java.util.Enumeration; +import java.util.EventListener; +import java.util.Map; +import java.util.Set; + +public interface ServletContext +{ + T createListener(java.lang.Class p0); + void addListener(T p0); + T createFilter(java.lang.Class p0); + T createServlet(java.lang.Class p0); + ClassLoader getClassLoader(); + Enumeration getAttributeNames(); + Enumeration getInitParameterNames(); + 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); + ServletContext getContext(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(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/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletInputStream.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletInputStream.java new file mode 100644 index 000000000000..9db836af5899 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletInputStream.java @@ -0,0 +1,15 @@ +// Generated automatically from jakarta.servlet.ServletInputStream for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ReadListener; +import java.io.InputStream; + +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/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletOutputStream.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletOutputStream.java new file mode 100644 index 000000000000..18cd370346f6 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletOutputStream.java @@ -0,0 +1,28 @@ +// Generated automatically from jakarta.servlet.ServletOutputStream for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.WriteListener; +import java.io.OutputStream; + +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){} + public void print(double p0){} + public void print(float p0){} + public void print(int p0){} + public void print(long p0){} + public void println(){} + public void println(String p0){} + public void println(boolean p0){} + public void println(char p0){} + public void println(double p0){} + public void println(float p0){} + public void println(int p0){} + public void println(long p0){} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRegistration.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRegistration.java new file mode 100644 index 000000000000..edb9c15562cf --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRegistration.java @@ -0,0 +1,23 @@ +// Generated automatically from jakarta.servlet.ServletRegistration for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.MultipartConfigElement; +import jakarta.servlet.Registration; +import jakarta.servlet.ServletSecurityElement; +import java.util.Collection; +import java.util.Set; + +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/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRequest.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRequest.java new file mode 100644 index 000000000000..f2c421a5a905 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRequest.java @@ -0,0 +1,58 @@ +// Generated automatically from jakarta.servlet.ServletRequest for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.AsyncContext; +import jakarta.servlet.DispatcherType; +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.ServletConnection; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletInputStream; +import jakarta.servlet.ServletResponse; +import java.io.BufferedReader; +import java.util.Enumeration; +import java.util.Locale; +import java.util.Map; + +public interface ServletRequest +{ + AsyncContext getAsyncContext(); + AsyncContext startAsync(); + AsyncContext startAsync(ServletRequest p0, ServletResponse p1); + BufferedReader getReader(); + DispatcherType getDispatcherType(); + Enumeration getLocales(); + Enumeration getAttributeNames(); + Enumeration getParameterNames(); + Locale getLocale(); + Map getParameterMap(); + Object getAttribute(String p0); + RequestDispatcher getRequestDispatcher(String p0); + ServletConnection getServletConnection(); + ServletContext getServletContext(); + ServletInputStream getInputStream(); + String getCharacterEncoding(); + String getContentType(); + String getLocalAddr(); + String getLocalName(); + String getParameter(String p0); + String getProtocol(); + String getProtocolRequestId(); + String getRemoteAddr(); + String getRemoteHost(); + String getRequestId(); + 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/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletResponse.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletResponse.java new file mode 100644 index 000000000000..05bcae9da5ab --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletResponse.java @@ -0,0 +1,27 @@ +// Generated automatically from jakarta.servlet.ServletResponse for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletOutputStream; +import java.io.PrintWriter; +import java.util.Locale; + +public interface ServletResponse +{ + Locale getLocale(); + PrintWriter getWriter(); + ServletOutputStream getOutputStream(); + String getCharacterEncoding(); + String getContentType(); + boolean isCommitted(); + int getBufferSize(); + void flushBuffer(); + void reset(); + void resetBuffer(); + 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/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletSecurityElement.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletSecurityElement.java new file mode 100644 index 000000000000..c234a0d213cc --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletSecurityElement.java @@ -0,0 +1,19 @@ +// Generated automatically from jakarta.servlet.ServletSecurityElement for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.HttpConstraintElement; +import jakarta.servlet.HttpMethodConstraintElement; +import jakarta.servlet.annotation.ServletSecurity; +import java.util.Collection; + +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/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionCookieConfig.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionCookieConfig.java new file mode 100644 index 000000000000..ed314f116335 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionCookieConfig.java @@ -0,0 +1,26 @@ +// Generated automatically from jakarta.servlet.SessionCookieConfig for testing purposes + +package jakarta.servlet; + +import java.util.Map; + +public interface SessionCookieConfig +{ + Map getAttributes(); + String getAttribute(String p0); + String getComment(); + String getDomain(); + String getName(); + String getPath(); + boolean isHttpOnly(); + boolean isSecure(); + int getMaxAge(); + void setAttribute(String p0, String p1); + 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/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionTrackingMode.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionTrackingMode.java new file mode 100644 index 000000000000..cfb68be57738 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionTrackingMode.java @@ -0,0 +1,10 @@ +// Generated automatically from jakarta.servlet.SessionTrackingMode for testing purposes + +package jakarta.servlet; + + +public enum SessionTrackingMode +{ + COOKIE, SSL, URL; + private SessionTrackingMode() {} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/WriteListener.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/WriteListener.java new file mode 100644 index 000000000000..a15ca4a89e11 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/WriteListener.java @@ -0,0 +1,11 @@ +// Generated automatically from jakarta.servlet.WriteListener for testing purposes + +package jakarta.servlet; + +import java.util.EventListener; + +public interface WriteListener extends EventListener +{ + void onError(Throwable p0); + void onWritePossible(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpConstraint.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpConstraint.java new file mode 100644 index 000000000000..674193af0684 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpConstraint.java @@ -0,0 +1,18 @@ +// Generated automatically from jakarta.servlet.annotation.HttpConstraint for testing purposes + +package jakarta.servlet.annotation; + +import jakarta.servlet.annotation.ServletSecurity; +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Documented +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +public @interface HttpConstraint +{ + ServletSecurity.EmptyRoleSemantic value(); + ServletSecurity.TransportGuarantee transportGuarantee(); + String[] rolesAllowed(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpMethodConstraint.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpMethodConstraint.java new file mode 100644 index 000000000000..4cf3c9359243 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpMethodConstraint.java @@ -0,0 +1,19 @@ +// Generated automatically from jakarta.servlet.annotation.HttpMethodConstraint for testing purposes + +package jakarta.servlet.annotation; + +import jakarta.servlet.annotation.ServletSecurity; +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Documented +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +public @interface HttpMethodConstraint +{ + ServletSecurity.EmptyRoleSemantic emptyRoleSemantic(); + ServletSecurity.TransportGuarantee transportGuarantee(); + String value(); + String[] rolesAllowed(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/MultipartConfig.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/MultipartConfig.java new file mode 100644 index 000000000000..3d9896318714 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/MultipartConfig.java @@ -0,0 +1,19 @@ +// Generated automatically from jakarta.servlet.annotation.MultipartConfig for testing purposes + +package jakarta.servlet.annotation; + +import java.lang.annotation.Annotation; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +@Target(value={java.lang.annotation.ElementType.TYPE}) +public @interface MultipartConfig +{ + String location(); + int fileSizeThreshold(); + long maxFileSize(); + long maxRequestSize(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/ServletSecurity.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/ServletSecurity.java new file mode 100644 index 000000000000..1819fbd07ae2 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/ServletSecurity.java @@ -0,0 +1,33 @@ +// Generated automatically from jakarta.servlet.annotation.ServletSecurity for testing purposes + +package jakarta.servlet.annotation; + +import jakarta.servlet.annotation.HttpConstraint; +import jakarta.servlet.annotation.HttpMethodConstraint; +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Documented +@Inherited +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +@Target(value={java.lang.annotation.ElementType.TYPE}) +public @interface ServletSecurity +{ + HttpConstraint value(); + HttpMethodConstraint[] httpMethodConstraints(); + static public enum EmptyRoleSemantic + { + DENY, PERMIT; + private EmptyRoleSemantic() {} + } + static public enum TransportGuarantee + { + CONFIDENTIAL, NONE; + private TransportGuarantee() {} + } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspConfigDescriptor.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspConfigDescriptor.java new file mode 100644 index 000000000000..eaa4ad0dc548 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspConfigDescriptor.java @@ -0,0 +1,13 @@ +// Generated automatically from jakarta.servlet.descriptor.JspConfigDescriptor for testing purposes + +package jakarta.servlet.descriptor; + +import jakarta.servlet.descriptor.JspPropertyGroupDescriptor; +import jakarta.servlet.descriptor.TaglibDescriptor; +import java.util.Collection; + +public interface JspConfigDescriptor +{ + Collection getJspPropertyGroups(); + Collection getTaglibs(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspPropertyGroupDescriptor.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspPropertyGroupDescriptor.java new file mode 100644 index 000000000000..f5abf48ff10b --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspPropertyGroupDescriptor.java @@ -0,0 +1,22 @@ +// Generated automatically from jakarta.servlet.descriptor.JspPropertyGroupDescriptor for testing purposes + +package jakarta.servlet.descriptor; + +import java.util.Collection; + +public interface JspPropertyGroupDescriptor +{ + Collection getIncludeCodas(); + Collection getIncludePreludes(); + Collection getUrlPatterns(); + String getBuffer(); + String getDefaultContentType(); + String getDeferredSyntaxAllowedAsLiteral(); + String getElIgnored(); + String getErrorOnELNotFound(); + String getErrorOnUndeclaredNamespace(); + String getIsXml(); + String getPageEncoding(); + String getScriptingInvalid(); + String getTrimDirectiveWhitespaces(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/TaglibDescriptor.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/TaglibDescriptor.java new file mode 100644 index 000000000000..ce54c9ca96d5 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/TaglibDescriptor.java @@ -0,0 +1,10 @@ +// Generated automatically from jakarta.servlet.descriptor.TaglibDescriptor for testing purposes + +package jakarta.servlet.descriptor; + + +public interface TaglibDescriptor +{ + String getTaglibLocation(); + String getTaglibURI(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Cookie.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Cookie.java new file mode 100644 index 000000000000..2ad1179a144f --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Cookie.java @@ -0,0 +1,36 @@ +// Generated automatically from jakarta.servlet.http.Cookie for testing purposes + +package jakarta.servlet.http; + +import java.io.Serializable; +import java.util.Map; + +public class Cookie implements Cloneable, Serializable +{ + protected Cookie() {} + public Cookie(String p0, String p1){} + public Map getAttributes(){ return null; } + public Object clone(){ return null; } + public String getAttribute(String p0){ return null; } + public String getComment(){ return null; } + public String getDomain(){ return null; } + public String getName(){ return null; } + public String getPath(){ return null; } + public String getValue(){ return null; } + public String toString(){ return null; } + public boolean equals(Object p0){ return false; } + public boolean getSecure(){ return false; } + public boolean isHttpOnly(){ return false; } + public int getMaxAge(){ return 0; } + public int getVersion(){ return 0; } + public int hashCode(){ return 0; } + public void setAttribute(String p0, String p1){} + 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){} + public void setValue(String p0){} + public void setVersion(int p0){} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletMapping.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletMapping.java new file mode 100644 index 000000000000..3b9ca6afbf2a --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletMapping.java @@ -0,0 +1,13 @@ +// Generated automatically from jakarta.servlet.http.HttpServletMapping for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.http.MappingMatch; + +public interface HttpServletMapping +{ + MappingMatch getMappingMatch(); + String getMatchValue(); + String getPattern(); + String getServletName(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletRequest.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletRequest.java new file mode 100644 index 000000000000..acaeba3253ac --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletRequest.java @@ -0,0 +1,59 @@ +// Generated automatically from jakarta.servlet.http.HttpServletRequest for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.ServletRequest; +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletMapping; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; +import jakarta.servlet.http.HttpUpgradeHandler; +import jakarta.servlet.http.Part; +import jakarta.servlet.http.PushBuilder; +import java.security.Principal; +import java.util.Collection; +import java.util.Enumeration; +import java.util.Map; + +public interface HttpServletRequest extends ServletRequest +{ + T upgrade(java.lang.Class p0); + Collection getParts(); + Cookie[] getCookies(); + 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); + String getMethod(); + String getPathInfo(); + String getPathTranslated(); + String getQueryString(); + String getRemoteUser(); + String getRequestURI(); + String getRequestedSessionId(); + String getServletPath(); + StringBuffer getRequestURL(); + boolean authenticate(HttpServletResponse p0); + boolean isRequestedSessionIdFromCookie(); + 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/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletResponse.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletResponse.java new file mode 100644 index 000000000000..92bf802235aa --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletResponse.java @@ -0,0 +1,74 @@ +// Generated automatically from jakarta.servlet.http.HttpServletResponse for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.ServletResponse; +import jakarta.servlet.http.Cookie; +import java.util.Collection; +import java.util.Map; +import java.util.function.Supplier; + +public interface HttpServletResponse extends ServletResponse +{ + Collection getHeaderNames(); + Collection getHeaders(String p0); + String encodeRedirectURL(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); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpSession.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpSession.java new file mode 100644 index 000000000000..0072d502ea6b --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpSession.java @@ -0,0 +1,22 @@ +// Generated automatically from jakarta.servlet.http.HttpSession for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.ServletContext; +import java.util.Enumeration; + +public interface HttpSession +{ + Enumeration getAttributeNames(); + Object getAttribute(String p0); + ServletContext getServletContext(); + String getId(); + boolean isNew(); + int getMaxInactiveInterval(); + long getCreationTime(); + long getLastAccessedTime(); + void invalidate(); + void removeAttribute(String p0); + void setAttribute(String p0, Object p1); + void setMaxInactiveInterval(int p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpUpgradeHandler.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpUpgradeHandler.java new file mode 100644 index 000000000000..94f8655be0a4 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpUpgradeHandler.java @@ -0,0 +1,11 @@ +// Generated automatically from jakarta.servlet.http.HttpUpgradeHandler for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.http.WebConnection; + +public interface HttpUpgradeHandler +{ + void destroy(); + void init(WebConnection p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/MappingMatch.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/MappingMatch.java new file mode 100644 index 000000000000..0c5e2f93ff32 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/MappingMatch.java @@ -0,0 +1,10 @@ +// Generated automatically from jakarta.servlet.http.MappingMatch for testing purposes + +package jakarta.servlet.http; + + +public enum MappingMatch +{ + CONTEXT_ROOT, DEFAULT, EXACT, EXTENSION, PATH; + private MappingMatch() {} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Part.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Part.java new file mode 100644 index 000000000000..37e83db3d079 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Part.java @@ -0,0 +1,20 @@ +// Generated automatically from jakarta.servlet.http.Part for testing purposes + +package jakarta.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/jakarta.servlet-api-6.0.0/jakarta/servlet/http/PushBuilder.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/PushBuilder.java new file mode 100644 index 000000000000..0821bde70e89 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/PushBuilder.java @@ -0,0 +1,23 @@ +// Generated automatically from jakarta.servlet.http.PushBuilder for testing purposes + +package jakarta.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/jakarta.servlet-api-6.0.0/jakarta/servlet/http/WebConnection.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/WebConnection.java new file mode 100644 index 000000000000..1a71a2c78ec6 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/WebConnection.java @@ -0,0 +1,12 @@ +// Generated automatically from jakarta.servlet.http.WebConnection for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.ServletInputStream; +import jakarta.servlet.ServletOutputStream; + +public interface WebConnection extends AutoCloseable +{ + ServletInputStream getInputStream(); + ServletOutputStream getOutputStream(); +} From 999fcca8f344b2930af65aa8dbad996a7d4ff633 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Tue, 15 Oct 2024 23:24:41 +0000 Subject: [PATCH 07/10] Add summary steps --- .../lib/ext/org.apache.commons.fileupload.util.model.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 java/ql/lib/ext/org.apache.commons.fileupload.util.model.yml diff --git a/java/ql/lib/ext/org.apache.commons.fileupload.util.model.yml b/java/ql/lib/ext/org.apache.commons.fileupload.util.model.yml new file mode 100644 index 000000000000..ed1e24d410d0 --- /dev/null +++ b/java/ql/lib/ext/org.apache.commons.fileupload.util.model.yml @@ -0,0 +1,9 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["org.apache.commons.fileupload.util", "Streams", True, "copy", "(InputStream,OutputStream,boolean)", "", "Argument[0]", "Argument[1]", "taint", "manual"] + - ["org.apache.commons.fileupload.util", "Streams", True, "copy", "(InputStream,OutputStream,boolean,byte[])", "", "Argument[0]", "Argument[1]", "taint", "manual"] + - ["org.apache.commons.fileupload.util", "Streams", True, "asString", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["org.apache.commons.fileupload.util", "Streams", True, "asString", "(InputStream,String)", "", "Argument[0]", "ReturnValue", "taint", "manual"] \ No newline at end of file From ddcf852d3f59078be3ea182669dc0b1de05e7b04 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Wed, 20 Nov 2024 01:07:03 +0000 Subject: [PATCH 08/10] Add taint steps --- .../lib/change-notes/2024-09-24-multipart.md | 2 +- .../apache-commons-fileupload-1.4/Test.java | 55 +++++++++++++++++++ .../apache-commons-fileupload-1.4/options | 1 + .../test.expected | 45 +++++++++++++++ .../apache-commons-fileupload-1.4/test.ql | 4 ++ .../commons/fileupload/util/Streams.java | 16 ++++++ 6 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/Test.java create mode 100644 java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/options create mode 100644 java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected create mode 100644 java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql create mode 100644 java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/util/Streams.java diff --git a/java/ql/lib/change-notes/2024-09-24-multipart.md b/java/ql/lib/change-notes/2024-09-24-multipart.md index f10cfbfd9443..e11026980658 100644 --- a/java/ql/lib/change-notes/2024-09-24-multipart.md +++ b/java/ql/lib/change-notes/2024-09-24-multipart.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* Added more dataflow models of `org.apache.commons.fileupload.FileItem` and `javax.servlet.http.Part`. \ No newline at end of file +* Added more dataflow models of `org.apache.commons.fileupload.FileItem`, `javax/jakarta.servlet.http.Part` and `org.apache.commons.fileupload.util.Streams`. \ No newline at end of file diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/Test.java b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/Test.java new file mode 100644 index 000000000000..552b9fc69739 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/Test.java @@ -0,0 +1,55 @@ +package com.mycompany.app; + +import org.apache.commons.fileupload.util.Streams; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.ByteArrayOutputStream; + +// Test case generated by GenerateFlowTestCase.ql +public class Test { + + Object source() { + return null; + } + + void sink(Object o) { + } + + public void test() throws Exception { + + { + InputStream in = (InputStream)source(); + OutputStream os = new ByteArrayOutputStream(1024); + + InputStream in2 = (InputStream)source(); + OutputStream os2 = new ByteArrayOutputStream(1024); + + byte[] myArray = new byte[1024]; + + // "org.apache.commons.fileupload.util;Streams;true;copy;(InputStream,OutputStream,boolean,byte[]);;Argument[0];Argument[1];taint;manual" + long status = Streams.copy(in, os, true, myArray); + sink(os); // $ hasTaintFlow + // "org.apache.commons.fileupload.util;Streams;true;copy;(InputStream,OutputStream,boolean);;Argument[0];Argument[1];taint;manual" + long status2 = Streams.copy(in2, os2, true); + sink(os2); // $ hasTaintFlow + } + + } + public void test2() throws Exception { + + { + + InputStream in = (InputStream)source(); + // "org.apache.commons.fileupload.util;Streams;true;asString;(InputStream,String);;Argument[0];ReturnValue;taint;manual" + String result = Streams.asString(in); + sink(result); // $ hasTaintFlow + + InputStream in1 = (InputStream)source(); + // "org.apache.commons.fileupload.util;Streams;true;asString;(InputStream,String);;Argument[0];ReturnValue;taint;manual" + String result1 = Streams.asString(in1, "test"); + sink(result1); // $ hasTaintFlow + } + + } + +} \ No newline at end of file diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/options b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/options new file mode 100644 index 000000000000..89451545827b --- /dev/null +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/apache-commons-fileupload-1.4 \ No newline at end of file diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected new file mode 100644 index 000000000000..f725a2f11bdd --- /dev/null +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected @@ -0,0 +1,45 @@ +models +| 1 | Summary: org.apache.commons.fileupload.util; Streams; true; asString; (InputStream); ; Argument[0]; ReturnValue; taint; manual | +| 2 | Summary: org.apache.commons.fileupload.util; Streams; true; asString; (InputStream,String); ; Argument[0]; ReturnValue; taint; manual | +| 3 | Summary: org.apache.commons.fileupload.util; Streams; true; copy; (InputStream,OutputStream,boolean); ; Argument[0]; Argument[1]; taint; manual | +| 4 | Summary: org.apache.commons.fileupload.util; Streams; true; copy; (InputStream,OutputStream,boolean,byte[]); ; Argument[0]; Argument[1]; taint; manual | +edges +| Test.java:22:30:22:50 | (...)... : InputStream | Test.java:30:31:30:32 | in : InputStream | provenance | | +| Test.java:22:43:22:50 | source(...) : Object | Test.java:22:30:22:50 | (...)... : InputStream | provenance | | +| Test.java:25:22:25:42 | (...)... : InputStream | Test.java:33:32:33:34 | in2 : InputStream | provenance | | +| Test.java:25:35:25:42 | source(...) : Object | Test.java:25:22:25:42 | (...)... : InputStream | provenance | | +| Test.java:30:31:30:32 | in : InputStream | Test.java:30:35:30:36 | os [post update] : ByteArrayOutputStream | provenance | MaD:4 | +| Test.java:30:35:30:36 | os [post update] : ByteArrayOutputStream | Test.java:31:9:31:10 | os | provenance | | +| Test.java:33:32:33:34 | in2 : InputStream | Test.java:33:37:33:39 | os2 [post update] : ByteArrayOutputStream | provenance | MaD:3 | +| Test.java:33:37:33:39 | os2 [post update] : ByteArrayOutputStream | Test.java:34:9:34:11 | os2 | provenance | | +| Test.java:45:30:45:50 | (...)... : InputStream | Test.java:47:37:47:38 | in : InputStream | provenance | | +| Test.java:45:43:45:50 | source(...) : Object | Test.java:45:30:45:50 | (...)... : InputStream | provenance | | +| Test.java:47:20:47:39 | asString(...) : String | Test.java:48:9:48:14 | result | provenance | | +| Test.java:47:37:47:38 | in : InputStream | Test.java:47:20:47:39 | asString(...) : String | provenance | MaD:1 | +| Test.java:50:31:50:51 | (...)... : InputStream | Test.java:51:47:51:49 | in1 : InputStream | provenance | | +| Test.java:50:44:50:51 | source(...) : Object | Test.java:50:31:50:51 | (...)... : InputStream | provenance | | +| Test.java:51:30:51:58 | asString(...) : String | Test.java:52:18:52:24 | result1 | provenance | | +| Test.java:51:47:51:49 | in1 : InputStream | Test.java:51:30:51:58 | asString(...) : String | provenance | MaD:2 | +nodes +| Test.java:22:30:22:50 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:22:43:22:50 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:25:22:25:42 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:25:35:25:42 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:30:31:30:32 | in : InputStream | semmle.label | in : InputStream | +| Test.java:30:35:30:36 | os [post update] : ByteArrayOutputStream | semmle.label | os [post update] : ByteArrayOutputStream | +| Test.java:31:9:31:10 | os | semmle.label | os | +| Test.java:33:32:33:34 | in2 : InputStream | semmle.label | in2 : InputStream | +| Test.java:33:37:33:39 | os2 [post update] : ByteArrayOutputStream | semmle.label | os2 [post update] : ByteArrayOutputStream | +| Test.java:34:9:34:11 | os2 | semmle.label | os2 | +| Test.java:45:30:45:50 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:45:43:45:50 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:47:20:47:39 | asString(...) : String | semmle.label | asString(...) : String | +| Test.java:47:37:47:38 | in : InputStream | semmle.label | in : InputStream | +| Test.java:48:9:48:14 | result | semmle.label | result | +| Test.java:50:31:50:51 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:50:44:50:51 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:51:30:51:58 | asString(...) : String | semmle.label | asString(...) : String | +| Test.java:51:47:51:49 | in1 : InputStream | semmle.label | in1 : InputStream | +| Test.java:52:18:52:24 | result1 | semmle.label | result1 | +subpaths +testFailures diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql new file mode 100644 index 000000000000..0004e84a3f10 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql @@ -0,0 +1,4 @@ +import java +import TestUtilities.InlineFlowTest +import DefaultFlowTest +import TaintFlow::PathGraph \ No newline at end of file diff --git a/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/util/Streams.java b/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/util/Streams.java new file mode 100644 index 000000000000..3c84ce04198b --- /dev/null +++ b/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/util/Streams.java @@ -0,0 +1,16 @@ +// Generated automatically from org.apache.commons.fileupload.util.Streams for testing purposes + +package org.apache.commons.fileupload.util; + +import java.io.InputStream; +import java.io.OutputStream; + +public class Streams +{ + protected Streams() {} + public static String asString(InputStream p0){ return null; } + public static String asString(InputStream p0, String p1){ return null; } + public static String checkFileName(String p0){ return null; } + public static long copy(InputStream p0, OutputStream p1, boolean p2){ return 0; } + public static long copy(InputStream p0, OutputStream p1, boolean p2, byte[] p3){ return 0; } +} From 981f67598cd32f264a21702eb2c69185087aaded Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Wed, 20 Nov 2024 07:51:11 +0000 Subject: [PATCH 09/10] Formatting --- .../frameworks/apache-commons-fileupload-1.4/test.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql index 0004e84a3f10..a8287d6c5f1a 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql @@ -1,4 +1,4 @@ import java import TestUtilities.InlineFlowTest import DefaultFlowTest -import TaintFlow::PathGraph \ No newline at end of file +import TaintFlow::PathGraph From 9c63033d45de400b0328f17838f46f7eb8448e42 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Wed, 20 Nov 2024 16:53:39 +0000 Subject: [PATCH 10/10] Fix tests --- .../test.expected | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected index f725a2f11bdd..76324560ac67 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected @@ -4,42 +4,42 @@ models | 3 | Summary: org.apache.commons.fileupload.util; Streams; true; copy; (InputStream,OutputStream,boolean); ; Argument[0]; Argument[1]; taint; manual | | 4 | Summary: org.apache.commons.fileupload.util; Streams; true; copy; (InputStream,OutputStream,boolean,byte[]); ; Argument[0]; Argument[1]; taint; manual | edges -| Test.java:22:30:22:50 | (...)... : InputStream | Test.java:30:31:30:32 | in : InputStream | provenance | | -| Test.java:22:43:22:50 | source(...) : Object | Test.java:22:30:22:50 | (...)... : InputStream | provenance | | -| Test.java:25:22:25:42 | (...)... : InputStream | Test.java:33:32:33:34 | in2 : InputStream | provenance | | -| Test.java:25:35:25:42 | source(...) : Object | Test.java:25:22:25:42 | (...)... : InputStream | provenance | | +| Test.java:21:30:21:50 | (...)... : InputStream | Test.java:30:31:30:32 | in : InputStream | provenance | | +| Test.java:21:43:21:50 | source(...) : Object | Test.java:21:30:21:50 | (...)... : InputStream | provenance | | +| Test.java:24:22:24:42 | (...)... : InputStream | Test.java:33:32:33:34 | in2 : InputStream | provenance | | +| Test.java:24:35:24:42 | source(...) : Object | Test.java:24:22:24:42 | (...)... : InputStream | provenance | | | Test.java:30:31:30:32 | in : InputStream | Test.java:30:35:30:36 | os [post update] : ByteArrayOutputStream | provenance | MaD:4 | | Test.java:30:35:30:36 | os [post update] : ByteArrayOutputStream | Test.java:31:9:31:10 | os | provenance | | | Test.java:33:32:33:34 | in2 : InputStream | Test.java:33:37:33:39 | os2 [post update] : ByteArrayOutputStream | provenance | MaD:3 | | Test.java:33:37:33:39 | os2 [post update] : ByteArrayOutputStream | Test.java:34:9:34:11 | os2 | provenance | | -| Test.java:45:30:45:50 | (...)... : InputStream | Test.java:47:37:47:38 | in : InputStream | provenance | | -| Test.java:45:43:45:50 | source(...) : Object | Test.java:45:30:45:50 | (...)... : InputStream | provenance | | -| Test.java:47:20:47:39 | asString(...) : String | Test.java:48:9:48:14 | result | provenance | | -| Test.java:47:37:47:38 | in : InputStream | Test.java:47:20:47:39 | asString(...) : String | provenance | MaD:1 | -| Test.java:50:31:50:51 | (...)... : InputStream | Test.java:51:47:51:49 | in1 : InputStream | provenance | | -| Test.java:50:44:50:51 | source(...) : Object | Test.java:50:31:50:51 | (...)... : InputStream | provenance | | -| Test.java:51:30:51:58 | asString(...) : String | Test.java:52:18:52:24 | result1 | provenance | | -| Test.java:51:47:51:49 | in1 : InputStream | Test.java:51:30:51:58 | asString(...) : String | provenance | MaD:2 | +| Test.java:42:30:42:50 | (...)... : InputStream | Test.java:44:37:44:38 | in : InputStream | provenance | | +| Test.java:42:43:42:50 | source(...) : Object | Test.java:42:30:42:50 | (...)... : InputStream | provenance | | +| Test.java:44:20:44:39 | asString(...) : String | Test.java:45:9:45:14 | result | provenance | | +| Test.java:44:37:44:38 | in : InputStream | Test.java:44:20:44:39 | asString(...) : String | provenance | MaD:1 | +| Test.java:47:31:47:51 | (...)... : InputStream | Test.java:49:47:49:49 | in1 : InputStream | provenance | | +| Test.java:47:44:47:51 | source(...) : Object | Test.java:47:31:47:51 | (...)... : InputStream | provenance | | +| Test.java:49:30:49:58 | asString(...) : String | Test.java:50:18:50:24 | result1 | provenance | | +| Test.java:49:47:49:49 | in1 : InputStream | Test.java:49:30:49:58 | asString(...) : String | provenance | MaD:2 | nodes -| Test.java:22:30:22:50 | (...)... : InputStream | semmle.label | (...)... : InputStream | -| Test.java:22:43:22:50 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:25:22:25:42 | (...)... : InputStream | semmle.label | (...)... : InputStream | -| Test.java:25:35:25:42 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:21:30:21:50 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:21:43:21:50 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:24:22:24:42 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:24:35:24:42 | source(...) : Object | semmle.label | source(...) : Object | | Test.java:30:31:30:32 | in : InputStream | semmle.label | in : InputStream | | Test.java:30:35:30:36 | os [post update] : ByteArrayOutputStream | semmle.label | os [post update] : ByteArrayOutputStream | | Test.java:31:9:31:10 | os | semmle.label | os | | Test.java:33:32:33:34 | in2 : InputStream | semmle.label | in2 : InputStream | | Test.java:33:37:33:39 | os2 [post update] : ByteArrayOutputStream | semmle.label | os2 [post update] : ByteArrayOutputStream | | Test.java:34:9:34:11 | os2 | semmle.label | os2 | -| Test.java:45:30:45:50 | (...)... : InputStream | semmle.label | (...)... : InputStream | -| Test.java:45:43:45:50 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:47:20:47:39 | asString(...) : String | semmle.label | asString(...) : String | -| Test.java:47:37:47:38 | in : InputStream | semmle.label | in : InputStream | -| Test.java:48:9:48:14 | result | semmle.label | result | -| Test.java:50:31:50:51 | (...)... : InputStream | semmle.label | (...)... : InputStream | -| Test.java:50:44:50:51 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:51:30:51:58 | asString(...) : String | semmle.label | asString(...) : String | -| Test.java:51:47:51:49 | in1 : InputStream | semmle.label | in1 : InputStream | -| Test.java:52:18:52:24 | result1 | semmle.label | result1 | +| Test.java:42:30:42:50 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:42:43:42:50 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:44:20:44:39 | asString(...) : String | semmle.label | asString(...) : String | +| Test.java:44:37:44:38 | in : InputStream | semmle.label | in : InputStream | +| Test.java:45:9:45:14 | result | semmle.label | result | +| Test.java:47:31:47:51 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:47:44:47:51 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:49:30:49:58 | asString(...) : String | semmle.label | asString(...) : String | +| Test.java:49:47:49:49 | in1 : InputStream | semmle.label | in1 : InputStream | +| Test.java:50:18:50:24 | result1 | semmle.label | result1 | subpaths testFailures