@@ -3,33 +3,36 @@ import semmle.code.java.frameworks.Servlets
33import semmle.code.java.frameworks.android.WebView
44import semmle.code.java.frameworks.spring.SpringController
55import semmle.code.java.frameworks.spring.SpringHttp
6- import semmle.code.java.dataflow.TaintTracking
6+ import semmle.code.java.dataflow.DataFlow
7+ import semmle.code.java.dataflow.TaintTracking2
78
89/*
910 * Definitions for XSS sinks
1011 */
1112
12- class XssSink extends DataFlow:: ExprNode {
13- XssSink ( ) {
13+ abstract class XssSink extends DataFlow:: Node { }
14+
15+ private class DefaultXssSink extends XssSink {
16+ DefaultXssSink ( ) {
1417 exists ( HttpServletResponseSendErrorMethod m , MethodAccess ma |
1518 ma .getMethod ( ) = m and
16- this .getExpr ( ) = ma .getArgument ( 1 )
19+ this .asExpr ( ) = ma .getArgument ( 1 )
1720 )
1821 or
1922 exists ( ServletWriterSourceToWritingMethodFlowConfig writer , MethodAccess ma |
2023 ma .getMethod ( ) instanceof WritingMethod and
2124 writer .hasFlowToExpr ( ma .getQualifier ( ) ) and
22- this .getExpr ( ) = ma .getArgument ( _)
25+ this .asExpr ( ) = ma .getArgument ( _)
2326 )
2427 or
2528 exists ( Method m |
2629 m .getDeclaringType ( ) instanceof TypeWebView and
2730 (
28- m .getAReference ( ) .getArgument ( 0 ) = this .getExpr ( ) and m .getName ( ) = "loadData"
31+ m .getAReference ( ) .getArgument ( 0 ) = this .asExpr ( ) and m .getName ( ) = "loadData"
2932 or
30- m .getAReference ( ) .getArgument ( 0 ) = this .getExpr ( ) and m .getName ( ) = "loadUrl"
33+ m .getAReference ( ) .getArgument ( 0 ) = this .asExpr ( ) and m .getName ( ) = "loadUrl"
3134 or
32- m .getAReference ( ) .getArgument ( 1 ) = this .getExpr ( ) and m .getName ( ) = "loadDataWithBaseURL"
35+ m .getAReference ( ) .getArgument ( 1 ) = this .asExpr ( ) and m .getName ( ) = "loadDataWithBaseURL"
3336 )
3437 )
3538 or
@@ -77,7 +80,7 @@ class XssSink extends DataFlow::ExprNode {
7780 }
7881}
7982
80- class ServletWriterSourceToWritingMethodFlowConfig extends TaintTracking :: Configuration {
83+ private class ServletWriterSourceToWritingMethodFlowConfig extends TaintTracking2 :: Configuration {
8184 ServletWriterSourceToWritingMethodFlowConfig ( ) {
8285 this = "XSS::ServletWriterSourceToWritingMethodFlowConfig"
8386 }
@@ -91,7 +94,7 @@ class ServletWriterSourceToWritingMethodFlowConfig extends TaintTracking::Config
9194 }
9295}
9396
94- class WritingMethod extends Method {
97+ private class WritingMethod extends Method {
9598 WritingMethod ( ) {
9699 getDeclaringType ( ) .getASupertype * ( ) .hasQualifiedName ( "java.io" , _) and
97100 (
0 commit comments