|
1 | 1 | import csharp |
2 | | -private import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl as ControlFlowGraphImpl |
3 | 2 | private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific |
4 | 3 | private import semmle.code.csharp.dataflow.internal.TaintTrackingImplSpecific |
5 | 4 | private import codeql.dataflow.internal.DataFlowImplConsistency |
6 | 5 |
|
7 | 6 | private module Input implements InputSig<Location, CsharpDataFlow> { |
8 | 7 | private import CsharpDataFlow |
9 | 8 |
|
10 | | - private predicate isStaticAssignable(Assignable a) { a.(Modifiable).isStatic() } |
11 | | - |
12 | | - predicate uniqueEnclosingCallableExclude(Node node) { |
13 | | - // TODO: Remove once static initializers are folded into the |
14 | | - // static constructors |
15 | | - isStaticAssignable(ControlFlowGraphImpl::getNodeCfgScope(node.getControlFlowNode())) |
16 | | - } |
17 | | - |
18 | | - predicate uniqueCallEnclosingCallableExclude(DataFlowCall call) { |
19 | | - // TODO: Remove once static initializers are folded into the |
20 | | - // static constructors |
21 | | - isStaticAssignable(ControlFlowGraphImpl::getNodeCfgScope(call.getControlFlowNode())) |
22 | | - } |
23 | | - |
| 9 | + // private predicate isStaticAssignable(Assignable a) { a.(Modifiable).isStatic() } |
| 10 | + // predicate uniqueEnclosingCallableExclude(Node node) { |
| 11 | + // // TODO: Remove once static initializers are folded into the |
| 12 | + // // static constructors |
| 13 | + // isStaticAssignable(ControlFlowGraphImpl::getNodeCfgScope(node.getControlFlowNode())) |
| 14 | + // } |
| 15 | + // predicate uniqueCallEnclosingCallableExclude(DataFlowCall call) { |
| 16 | + // // TODO: Remove once static initializers are folded into the |
| 17 | + // // static constructors |
| 18 | + // isStaticAssignable(ControlFlowGraphImpl::getNodeCfgScope(call.getControlFlowNode())) |
| 19 | + // } |
24 | 20 | predicate uniqueNodeLocationExclude(Node n) { |
25 | 21 | // Methods with multiple implementations |
26 | 22 | n instanceof ParameterNode |
@@ -70,16 +66,6 @@ private module Input implements InputSig<Location, CsharpDataFlow> { |
70 | 66 | init.getInitializer().getNumberOfChildren() > 1 |
71 | 67 | ) |
72 | 68 | or |
73 | | - exists(ControlFlowNodes::ElementNode cfn, ControlFlowNodes::Split split | |
74 | | - exists(arg.asExprAtNode(cfn)) |
75 | | - | |
76 | | - split = cfn.getASplit() and |
77 | | - not split = call.getControlFlowNode().getASplit() |
78 | | - or |
79 | | - split = call.getControlFlowNode().getASplit() and |
80 | | - not split = cfn.getASplit() |
81 | | - ) |
82 | | - or |
83 | 69 | call.(NonDelegateDataFlowCall).getDispatchCall().isReflection() |
84 | 70 | ) |
85 | 71 | } |
|
0 commit comments