Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 91dd677

Browse files
hvitvedtamasvajk
authored andcommitted
C#: Exclude assembly attribute expressions from CFG construction
1 parent 4b88b23 commit 91dd677

13 files changed

Lines changed: 19 additions & 39 deletions

File tree

csharp/ql/src/semmle/code/csharp/controlflow/internal/Splitting.qll

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1462,7 +1462,11 @@ predicate succEntrySplits(
14621462
exists(int rnk |
14631463
succ = succEntry(pred) and
14641464
t instanceof NormalSuccessor and
1465-
succEntrySplitsFromRank(pred, succ, succSplits, rnk)
1465+
succEntrySplitsFromRank(pred, succ, succSplits, rnk) and
1466+
// Attribute arguments in assemblies are represented as expressions, even though
1467+
// they are not from source. We are not interested in constructing a CFG for such
1468+
// expressions.
1469+
succ.fromSource()
14661470
|
14671471
rnk = 0 and
14681472
not any(SplitInternal split).hasEntry(pred, succ)

csharp/ql/test/library-tests/controlflow/graph/BasicBlock.ql

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,4 @@ import csharp
22
import Common
33

44
from SourceBasicBlock bb
5-
where bb.getLocation().getFile().fromSource()
65
select bb.getFirstNode(), bb.getLastNode(), bb.length()

csharp/ql/test/library-tests/controlflow/graph/Dominance.ql

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,16 @@ import Common
33

44
query predicate dominance(SourceControlFlowNode dom, SourceControlFlowNode node) {
55
dom.strictlyDominates(node) and
6-
dom.getASuccessor() = node and
7-
dom.getLocation().getFile().fromSource()
6+
dom.getASuccessor() = node
87
}
98

109
query predicate postDominance(SourceControlFlowNode dom, SourceControlFlowNode node) {
1110
dom.strictlyPostDominates(node) and
12-
dom.getAPredecessor() = node and
13-
dom.getLocation().getFile().fromSource()
11+
dom.getAPredecessor() = node
1412
}
1513

16-
query predicate blockDominance(SourceBasicBlock dom, SourceBasicBlock bb) {
17-
dom.dominates(bb) and
18-
dom.getLocation().getFile().fromSource()
19-
}
14+
query predicate blockDominance(SourceBasicBlock dom, SourceBasicBlock bb) { dom.dominates(bb) }
2015

2116
query predicate postBlockDominance(SourceBasicBlock dom, SourceBasicBlock bb) {
22-
dom.postDominates(bb) and
23-
dom.getLocation().getFile().fromSource()
17+
dom.postDominates(bb)
2418
}

csharp/ql/test/library-tests/controlflow/graph/NodeGraph.ql

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@ import Common
44
query predicate edges(
55
SourceControlFlowNode node, SourceControlFlowNode successor, string attr, string val
66
) {
7-
exists(ControlFlow::SuccessorType t |
8-
successor = node.getASuccessorByType(t) and
9-
(node.getElement().fromSource() or successor.getElement().fromSource())
10-
|
7+
exists(ControlFlow::SuccessorType t | successor = node.getASuccessorByType(t) |
118
attr = "semmle.label" and
129
val = t.toString()
1310
)
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import csharp
22

33
query predicate countSplits(ControlFlowElement cfe, int i) {
4-
i = strictcount(ControlFlow::Nodes::ElementNode n | n.getElement() = cfe and cfe.fromSource())
4+
i = strictcount(ControlFlow::Nodes::ElementNode n | n.getElement() = cfe)
55
}
66

7-
query predicate ssaDef(Ssa::Definition def) { def.getLocation().getFile().fromSource() }
7+
query predicate ssaDef(Ssa::Definition def) { any() }

csharp/ql/test/library-tests/csharp7/LocalTaintFlow.ql

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,5 @@ import csharp
22
import semmle.code.csharp.dataflow.TaintTracking
33

44
from DataFlow::Node pred, DataFlow::Node succ
5-
where
6-
TaintTracking::localTaintStep(pred, succ) and
7-
pred.getLocation().getFile().fromSource()
5+
where TaintTracking::localTaintStep(pred, succ)
86
select pred, succ

csharp/ql/test/library-tests/csharp7/TaintReaches.ql

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,5 @@ import csharp
22
import semmle.code.csharp.dataflow.TaintTracking
33

44
from StringLiteral l, DataFlow::Node n
5-
where
6-
TaintTracking::localTaintStep+(DataFlow::exprNode(l), n) and
7-
n.getLocation().getFile().fromSource()
5+
where TaintTracking::localTaintStep+(DataFlow::exprNode(l), n)
86
select l, n
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import csharp
22

33
from DataFlow::Node pred, DataFlow::Node succ
4-
where
5-
DataFlow::localFlowStep(pred, succ) and
6-
pred.getLocation().getFile().fromSource()
4+
where DataFlow::localFlowStep(pred, succ)
75
select pred, succ
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import csharp
22

33
from DataFlow::Node pred, DataFlow::Node succ
4-
where
5-
TaintTracking::localTaintStep(pred, succ) and
6-
pred.getLocation().getFile().fromSource()
4+
where TaintTracking::localTaintStep(pred, succ)
75
select pred, succ

csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ import semmle.code.csharp.dataflow.ModulusAnalysis
44
import semmle.code.csharp.dataflow.Bound
55

66
from ControlFlow::Nodes::ExprNode e, Bound b, int delta, int mod
7-
where exprModulus(e, b, delta, mod) and e.getExpr().fromSource()
7+
where exprModulus(e, b, delta, mod)
88
select e, b.toString(), delta, mod

0 commit comments

Comments
 (0)