Skip to content

Commit 9c52077

Browse files
committed
Merge remote-tracking branch 'upstream/main' into no-types-integration-test
2 parents ad4f464 + b29c886 commit 9c52077

File tree

44 files changed

+2303
-2259
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+2303
-2259
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
category: minorAnalysis
3+
---
4+
* Changed the output of `Node.toString` to better reflect how many indirections a given dataflow node has.

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll

Lines changed: 63 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -492,10 +492,41 @@ private string toExprString(Node n) {
492492
result = n.asExpr(0).toString()
493493
or
494494
not exists(n.asExpr()) and
495-
result = n.asIndirectExpr(0, 1).toString() + " indirection"
495+
result = stars(n) + n.asIndirectExpr(0, 1).toString()
496496
)
497497
}
498498

499+
private module NodeStars {
500+
private int getNumberOfIndirections(Node n) {
501+
result = n.(RawIndirectOperand).getIndirectionIndex()
502+
or
503+
result = n.(RawIndirectInstruction).getIndirectionIndex()
504+
or
505+
result = n.(VariableNode).getIndirectionIndex()
506+
or
507+
result = n.(PostUpdateNodeImpl).getIndirectionIndex()
508+
or
509+
result = n.(FinalParameterNode).getIndirectionIndex()
510+
}
511+
512+
private int maxNumberOfIndirections() { result = max(getNumberOfIndirections(_)) }
513+
514+
private string repeatStars(int n) {
515+
n = 0 and result = ""
516+
or
517+
n = [1 .. maxNumberOfIndirections()] and
518+
result = "*" + repeatStars(n - 1)
519+
}
520+
521+
/**
522+
* Gets the number of stars (i.e., `*`s) needed to produce the `toString`
523+
* output for `n`.
524+
*/
525+
string stars(Node n) { result = repeatStars(getNumberOfIndirections(n)) }
526+
}
527+
528+
private import NodeStars
529+
499530
/**
500531
* A class that lifts pre-SSA dataflow nodes to regular dataflow nodes.
501532
*/
@@ -786,10 +817,12 @@ class IndirectParameterNode extends Node instanceof IndirectInstruction {
786817
override Location getLocationImpl() { result = this.getParameter().getLocation() }
787818

788819
override string toStringImpl() {
789-
result = this.getParameter().toString() + " indirection"
790-
or
791-
not exists(this.getParameter()) and
792-
result = "this indirection"
820+
exists(string prefix | prefix = stars(this) |
821+
result = prefix + this.getParameter().toString()
822+
or
823+
not exists(this.getParameter()) and
824+
result = prefix + "this"
825+
)
793826
}
794827
}
795828

@@ -1016,7 +1049,7 @@ private module RawIndirectNodes {
10161049
}
10171050

10181051
override string toStringImpl() {
1019-
result = operandNode(this.getOperand()).toStringImpl() + " indirection"
1052+
result = stars(this) + operandNode(this.getOperand()).toStringImpl()
10201053
}
10211054
}
10221055

@@ -1058,7 +1091,7 @@ private module RawIndirectNodes {
10581091
}
10591092

10601093
override string toStringImpl() {
1061-
result = instructionNode(this.getInstruction()).toStringImpl() + " indirection"
1094+
result = stars(this) + instructionNode(this.getInstruction()).toStringImpl()
10621095
}
10631096
}
10641097

@@ -1151,9 +1184,7 @@ class FinalParameterNode extends Node, TFinalParameterNode {
11511184
result instanceof UnknownDefaultLocation
11521185
}
11531186

1154-
override string toStringImpl() {
1155-
if indirectionIndex > 1 then result = p.toString() + " indirection" else result = p.toString()
1156-
}
1187+
override string toStringImpl() { result = stars(this) + p.toString() }
11571188
}
11581189

11591190
/**
@@ -1787,9 +1818,7 @@ class VariableNode extends Node, TVariableNode {
17871818
result instanceof UnknownDefaultLocation
17881819
}
17891820

1790-
override string toStringImpl() {
1791-
if indirectionIndex = 1 then result = v.toString() else result = v.toString() + " indirection"
1792-
}
1821+
override string toStringImpl() { result = stars(this) + v.toString() }
17931822
}
17941823

17951824
/**
@@ -2249,18 +2278,33 @@ class Content extends TContent {
22492278
abstract predicate impliesClearOf(Content c);
22502279
}
22512280

2281+
private module ContentStars {
2282+
private int maxNumberOfIndirections() { result = max(any(Content c).getIndirectionIndex()) }
2283+
2284+
private string repeatStars(int n) {
2285+
n = 0 and result = ""
2286+
or
2287+
n = [1 .. maxNumberOfIndirections()] and
2288+
result = "*" + repeatStars(n - 1)
2289+
}
2290+
2291+
/**
2292+
* Gets the number of stars (i.e., `*`s) needed to produce the `toString`
2293+
* output for `c`.
2294+
*/
2295+
string contentStars(Content c) { result = repeatStars(c.getIndirectionIndex() - 1) }
2296+
}
2297+
2298+
private import ContentStars
2299+
22522300
/** A reference through a non-union instance field. */
22532301
class FieldContent extends Content, TFieldContent {
22542302
Field f;
22552303
int indirectionIndex;
22562304

22572305
FieldContent() { this = TFieldContent(f, indirectionIndex) }
22582306

2259-
override string toString() {
2260-
indirectionIndex = 1 and result = f.toString()
2261-
or
2262-
indirectionIndex > 1 and result = f.toString() + " indirection"
2263-
}
2307+
override string toString() { result = contentStars(this) + f.toString() }
22642308

22652309
Field getField() { result = f }
22662310

@@ -2289,11 +2333,7 @@ class UnionContent extends Content, TUnionContent {
22892333

22902334
UnionContent() { this = TUnionContent(u, bytes, indirectionIndex) }
22912335

2292-
override string toString() {
2293-
indirectionIndex = 1 and result = u.toString()
2294-
or
2295-
indirectionIndex > 1 and result = u.toString() + " indirection"
2296-
}
2336+
override string toString() { result = contentStars(this) + u.toString() }
22972337

22982338
/** Gets a field of the underlying union of this `UnionContent`, if any. */
22992339
Field getAField() { result = u.getAField() and getFieldSize(result) = bytes }
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
edges
2-
| test.cpp:22:27:22:30 | argv indirection | test.cpp:29:13:29:20 | filePath indirection |
2+
| test.cpp:22:27:22:30 | **argv | test.cpp:29:13:29:20 | *filePath |
33
nodes
4-
| test.cpp:22:27:22:30 | argv indirection | semmle.label | argv indirection |
5-
| test.cpp:29:13:29:20 | filePath indirection | semmle.label | filePath indirection |
4+
| test.cpp:22:27:22:30 | **argv | semmle.label | **argv |
5+
| test.cpp:29:13:29:20 | *filePath | semmle.label | *filePath |
66
subpaths
77
#select
8-
| test.cpp:29:13:29:20 | filePath indirection | test.cpp:22:27:22:30 | argv indirection | test.cpp:29:13:29:20 | filePath indirection | Using user-supplied data in a `wordexp` command, without disabling command substitution, can make code vulnerable to command injection. |
8+
| test.cpp:29:13:29:20 | *filePath | test.cpp:22:27:22:30 | **argv | test.cpp:29:13:29:20 | *filePath | Using user-supplied data in a `wordexp` command, without disabling command substitution, can make code vulnerable to command injection. |

cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/array-access/ArrayAccessProductFlow.expected

Lines changed: 54 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,87 @@
11
edges
22
| test.cpp:4:17:4:22 | call to malloc | test.cpp:6:9:6:11 | arr |
33
| test.cpp:4:17:4:22 | call to malloc | test.cpp:10:9:10:11 | arr |
4-
| test.cpp:19:9:19:16 | mk_array indirection [p] | test.cpp:28:19:28:26 | call to mk_array [p] |
5-
| test.cpp:19:9:19:16 | mk_array indirection [p] | test.cpp:50:18:50:25 | call to mk_array [p] |
6-
| test.cpp:21:5:21:7 | arr indirection [post update] [p] | test.cpp:22:5:22:7 | arr indirection [p] |
7-
| test.cpp:21:5:21:24 | ... = ... | test.cpp:21:5:21:7 | arr indirection [post update] [p] |
4+
| test.cpp:19:9:19:16 | *mk_array [p] | test.cpp:28:19:28:26 | call to mk_array [p] |
5+
| test.cpp:19:9:19:16 | *mk_array [p] | test.cpp:50:18:50:25 | call to mk_array [p] |
6+
| test.cpp:21:5:21:7 | *arr [post update] [p] | test.cpp:22:5:22:7 | *arr [p] |
7+
| test.cpp:21:5:21:24 | ... = ... | test.cpp:21:5:21:7 | *arr [post update] [p] |
88
| test.cpp:21:13:21:18 | call to malloc | test.cpp:21:5:21:24 | ... = ... |
9-
| test.cpp:22:5:22:7 | arr indirection [p] | test.cpp:19:9:19:16 | mk_array indirection [p] |
10-
| test.cpp:28:19:28:26 | call to mk_array [p] | test.cpp:31:9:31:11 | arr indirection [p] |
11-
| test.cpp:28:19:28:26 | call to mk_array [p] | test.cpp:35:9:35:11 | arr indirection [p] |
12-
| test.cpp:31:9:31:11 | arr indirection [p] | test.cpp:31:13:31:13 | p |
13-
| test.cpp:35:9:35:11 | arr indirection [p] | test.cpp:35:13:35:13 | p |
14-
| test.cpp:39:27:39:29 | arr [p] | test.cpp:41:9:41:11 | arr indirection [p] |
15-
| test.cpp:39:27:39:29 | arr [p] | test.cpp:45:9:45:11 | arr indirection [p] |
16-
| test.cpp:41:9:41:11 | arr indirection [p] | test.cpp:41:13:41:13 | p |
17-
| test.cpp:45:9:45:11 | arr indirection [p] | test.cpp:45:13:45:13 | p |
9+
| test.cpp:22:5:22:7 | *arr [p] | test.cpp:19:9:19:16 | *mk_array [p] |
10+
| test.cpp:28:19:28:26 | call to mk_array [p] | test.cpp:31:9:31:11 | *arr [p] |
11+
| test.cpp:28:19:28:26 | call to mk_array [p] | test.cpp:35:9:35:11 | *arr [p] |
12+
| test.cpp:31:9:31:11 | *arr [p] | test.cpp:31:13:31:13 | p |
13+
| test.cpp:35:9:35:11 | *arr [p] | test.cpp:35:13:35:13 | p |
14+
| test.cpp:39:27:39:29 | arr [p] | test.cpp:41:9:41:11 | *arr [p] |
15+
| test.cpp:39:27:39:29 | arr [p] | test.cpp:45:9:45:11 | *arr [p] |
16+
| test.cpp:41:9:41:11 | *arr [p] | test.cpp:41:13:41:13 | p |
17+
| test.cpp:45:9:45:11 | *arr [p] | test.cpp:45:13:45:13 | p |
1818
| test.cpp:50:18:50:25 | call to mk_array [p] | test.cpp:39:27:39:29 | arr [p] |
19-
| test.cpp:55:5:55:7 | arr indirection [post update] [p] | test.cpp:56:5:56:7 | arr indirection [p] |
20-
| test.cpp:55:5:55:24 | ... = ... | test.cpp:55:5:55:7 | arr indirection [post update] [p] |
19+
| test.cpp:55:5:55:7 | *arr [post update] [p] | test.cpp:56:5:56:7 | *arr [p] |
20+
| test.cpp:55:5:55:24 | ... = ... | test.cpp:55:5:55:7 | *arr [post update] [p] |
2121
| test.cpp:55:13:55:18 | call to malloc | test.cpp:55:5:55:24 | ... = ... |
22-
| test.cpp:56:5:56:7 | arr indirection [p] | test.cpp:59:9:59:11 | arr indirection [p] |
23-
| test.cpp:56:5:56:7 | arr indirection [p] | test.cpp:63:9:63:11 | arr indirection [p] |
24-
| test.cpp:59:9:59:11 | arr indirection [p] | test.cpp:59:13:59:13 | p |
25-
| test.cpp:63:9:63:11 | arr indirection [p] | test.cpp:63:13:63:13 | p |
26-
| test.cpp:67:10:67:19 | mk_array_p indirection [p] | test.cpp:76:20:76:29 | call to mk_array_p indirection [p] |
27-
| test.cpp:67:10:67:19 | mk_array_p indirection [p] | test.cpp:98:18:98:27 | call to mk_array_p indirection [p] |
28-
| test.cpp:69:5:69:7 | arr indirection [post update] [p] | test.cpp:70:5:70:7 | arr indirection [p] |
29-
| test.cpp:69:5:69:25 | ... = ... | test.cpp:69:5:69:7 | arr indirection [post update] [p] |
22+
| test.cpp:56:5:56:7 | *arr [p] | test.cpp:59:9:59:11 | *arr [p] |
23+
| test.cpp:56:5:56:7 | *arr [p] | test.cpp:63:9:63:11 | *arr [p] |
24+
| test.cpp:59:9:59:11 | *arr [p] | test.cpp:59:13:59:13 | p |
25+
| test.cpp:63:9:63:11 | *arr [p] | test.cpp:63:13:63:13 | p |
26+
| test.cpp:67:10:67:19 | **mk_array_p [p] | test.cpp:76:20:76:29 | *call to mk_array_p [p] |
27+
| test.cpp:67:10:67:19 | **mk_array_p [p] | test.cpp:98:18:98:27 | *call to mk_array_p [p] |
28+
| test.cpp:69:5:69:7 | *arr [post update] [p] | test.cpp:70:5:70:7 | *arr [p] |
29+
| test.cpp:69:5:69:25 | ... = ... | test.cpp:69:5:69:7 | *arr [post update] [p] |
3030
| test.cpp:69:14:69:19 | call to malloc | test.cpp:69:5:69:25 | ... = ... |
31-
| test.cpp:70:5:70:7 | arr indirection [p] | test.cpp:67:10:67:19 | mk_array_p indirection [p] |
32-
| test.cpp:76:20:76:29 | call to mk_array_p indirection [p] | test.cpp:79:9:79:11 | arr indirection [p] |
33-
| test.cpp:76:20:76:29 | call to mk_array_p indirection [p] | test.cpp:83:9:83:11 | arr indirection [p] |
34-
| test.cpp:79:9:79:11 | arr indirection [p] | test.cpp:79:14:79:14 | p |
35-
| test.cpp:83:9:83:11 | arr indirection [p] | test.cpp:83:14:83:14 | p |
36-
| test.cpp:87:28:87:30 | arr indirection [p] | test.cpp:89:9:89:11 | arr indirection [p] |
37-
| test.cpp:87:28:87:30 | arr indirection [p] | test.cpp:93:9:93:11 | arr indirection [p] |
38-
| test.cpp:89:9:89:11 | arr indirection [p] | test.cpp:89:14:89:14 | p |
39-
| test.cpp:93:9:93:11 | arr indirection [p] | test.cpp:93:14:93:14 | p |
40-
| test.cpp:98:18:98:27 | call to mk_array_p indirection [p] | test.cpp:87:28:87:30 | arr indirection [p] |
31+
| test.cpp:70:5:70:7 | *arr [p] | test.cpp:67:10:67:19 | **mk_array_p [p] |
32+
| test.cpp:76:20:76:29 | *call to mk_array_p [p] | test.cpp:79:9:79:11 | *arr [p] |
33+
| test.cpp:76:20:76:29 | *call to mk_array_p [p] | test.cpp:83:9:83:11 | *arr [p] |
34+
| test.cpp:79:9:79:11 | *arr [p] | test.cpp:79:14:79:14 | p |
35+
| test.cpp:83:9:83:11 | *arr [p] | test.cpp:83:14:83:14 | p |
36+
| test.cpp:87:28:87:30 | *arr [p] | test.cpp:89:9:89:11 | *arr [p] |
37+
| test.cpp:87:28:87:30 | *arr [p] | test.cpp:93:9:93:11 | *arr [p] |
38+
| test.cpp:89:9:89:11 | *arr [p] | test.cpp:89:14:89:14 | p |
39+
| test.cpp:93:9:93:11 | *arr [p] | test.cpp:93:14:93:14 | p |
40+
| test.cpp:98:18:98:27 | *call to mk_array_p [p] | test.cpp:87:28:87:30 | *arr [p] |
4141
nodes
4242
| test.cpp:4:17:4:22 | call to malloc | semmle.label | call to malloc |
4343
| test.cpp:6:9:6:11 | arr | semmle.label | arr |
4444
| test.cpp:10:9:10:11 | arr | semmle.label | arr |
45-
| test.cpp:19:9:19:16 | mk_array indirection [p] | semmle.label | mk_array indirection [p] |
46-
| test.cpp:21:5:21:7 | arr indirection [post update] [p] | semmle.label | arr indirection [post update] [p] |
45+
| test.cpp:19:9:19:16 | *mk_array [p] | semmle.label | *mk_array [p] |
46+
| test.cpp:21:5:21:7 | *arr [post update] [p] | semmle.label | *arr [post update] [p] |
4747
| test.cpp:21:5:21:24 | ... = ... | semmle.label | ... = ... |
4848
| test.cpp:21:13:21:18 | call to malloc | semmle.label | call to malloc |
49-
| test.cpp:22:5:22:7 | arr indirection [p] | semmle.label | arr indirection [p] |
49+
| test.cpp:22:5:22:7 | *arr [p] | semmle.label | *arr [p] |
5050
| test.cpp:28:19:28:26 | call to mk_array [p] | semmle.label | call to mk_array [p] |
51-
| test.cpp:31:9:31:11 | arr indirection [p] | semmle.label | arr indirection [p] |
51+
| test.cpp:31:9:31:11 | *arr [p] | semmle.label | *arr [p] |
5252
| test.cpp:31:13:31:13 | p | semmle.label | p |
53-
| test.cpp:35:9:35:11 | arr indirection [p] | semmle.label | arr indirection [p] |
53+
| test.cpp:35:9:35:11 | *arr [p] | semmle.label | *arr [p] |
5454
| test.cpp:35:13:35:13 | p | semmle.label | p |
5555
| test.cpp:39:27:39:29 | arr [p] | semmle.label | arr [p] |
56-
| test.cpp:41:9:41:11 | arr indirection [p] | semmle.label | arr indirection [p] |
56+
| test.cpp:41:9:41:11 | *arr [p] | semmle.label | *arr [p] |
5757
| test.cpp:41:13:41:13 | p | semmle.label | p |
58-
| test.cpp:45:9:45:11 | arr indirection [p] | semmle.label | arr indirection [p] |
58+
| test.cpp:45:9:45:11 | *arr [p] | semmle.label | *arr [p] |
5959
| test.cpp:45:13:45:13 | p | semmle.label | p |
6060
| test.cpp:50:18:50:25 | call to mk_array [p] | semmle.label | call to mk_array [p] |
61-
| test.cpp:55:5:55:7 | arr indirection [post update] [p] | semmle.label | arr indirection [post update] [p] |
61+
| test.cpp:55:5:55:7 | *arr [post update] [p] | semmle.label | *arr [post update] [p] |
6262
| test.cpp:55:5:55:24 | ... = ... | semmle.label | ... = ... |
6363
| test.cpp:55:13:55:18 | call to malloc | semmle.label | call to malloc |
64-
| test.cpp:56:5:56:7 | arr indirection [p] | semmle.label | arr indirection [p] |
65-
| test.cpp:59:9:59:11 | arr indirection [p] | semmle.label | arr indirection [p] |
64+
| test.cpp:56:5:56:7 | *arr [p] | semmle.label | *arr [p] |
65+
| test.cpp:59:9:59:11 | *arr [p] | semmle.label | *arr [p] |
6666
| test.cpp:59:13:59:13 | p | semmle.label | p |
67-
| test.cpp:63:9:63:11 | arr indirection [p] | semmle.label | arr indirection [p] |
67+
| test.cpp:63:9:63:11 | *arr [p] | semmle.label | *arr [p] |
6868
| test.cpp:63:13:63:13 | p | semmle.label | p |
69-
| test.cpp:67:10:67:19 | mk_array_p indirection [p] | semmle.label | mk_array_p indirection [p] |
70-
| test.cpp:69:5:69:7 | arr indirection [post update] [p] | semmle.label | arr indirection [post update] [p] |
69+
| test.cpp:67:10:67:19 | **mk_array_p [p] | semmle.label | **mk_array_p [p] |
70+
| test.cpp:69:5:69:7 | *arr [post update] [p] | semmle.label | *arr [post update] [p] |
7171
| test.cpp:69:5:69:25 | ... = ... | semmle.label | ... = ... |
7272
| test.cpp:69:14:69:19 | call to malloc | semmle.label | call to malloc |
73-
| test.cpp:70:5:70:7 | arr indirection [p] | semmle.label | arr indirection [p] |
74-
| test.cpp:76:20:76:29 | call to mk_array_p indirection [p] | semmle.label | call to mk_array_p indirection [p] |
75-
| test.cpp:79:9:79:11 | arr indirection [p] | semmle.label | arr indirection [p] |
73+
| test.cpp:70:5:70:7 | *arr [p] | semmle.label | *arr [p] |
74+
| test.cpp:76:20:76:29 | *call to mk_array_p [p] | semmle.label | *call to mk_array_p [p] |
75+
| test.cpp:79:9:79:11 | *arr [p] | semmle.label | *arr [p] |
7676
| test.cpp:79:14:79:14 | p | semmle.label | p |
77-
| test.cpp:83:9:83:11 | arr indirection [p] | semmle.label | arr indirection [p] |
77+
| test.cpp:83:9:83:11 | *arr [p] | semmle.label | *arr [p] |
7878
| test.cpp:83:14:83:14 | p | semmle.label | p |
79-
| test.cpp:87:28:87:30 | arr indirection [p] | semmle.label | arr indirection [p] |
80-
| test.cpp:89:9:89:11 | arr indirection [p] | semmle.label | arr indirection [p] |
79+
| test.cpp:87:28:87:30 | *arr [p] | semmle.label | *arr [p] |
80+
| test.cpp:89:9:89:11 | *arr [p] | semmle.label | *arr [p] |
8181
| test.cpp:89:14:89:14 | p | semmle.label | p |
82-
| test.cpp:93:9:93:11 | arr indirection [p] | semmle.label | arr indirection [p] |
82+
| test.cpp:93:9:93:11 | *arr [p] | semmle.label | *arr [p] |
8383
| test.cpp:93:14:93:14 | p | semmle.label | p |
84-
| test.cpp:98:18:98:27 | call to mk_array_p indirection [p] | semmle.label | call to mk_array_p indirection [p] |
84+
| test.cpp:98:18:98:27 | *call to mk_array_p [p] | semmle.label | *call to mk_array_p [p] |
8585
subpaths
8686
#select
8787
| test.cpp:10:9:10:11 | arr | test.cpp:4:17:4:22 | call to malloc | test.cpp:10:9:10:11 | arr | Off-by one error allocated at $@ bounded by $@. | test.cpp:4:17:4:22 | call to malloc | call to malloc | test.cpp:4:24:4:27 | size | size |

cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ edges
3535
| test.cpp:136:9:136:16 | ... += ... | test.cpp:138:13:138:15 | arr |
3636
| test.cpp:143:18:143:21 | asdf | test.cpp:134:25:134:27 | arr |
3737
| test.cpp:143:18:143:21 | asdf | test.cpp:143:18:143:21 | asdf |
38-
| test.cpp:146:26:146:26 | p indirection | test.cpp:147:4:147:9 | -- ... |
38+
| test.cpp:146:26:146:26 | *p | test.cpp:147:4:147:9 | -- ... |
3939
| test.cpp:156:12:156:14 | buf | test.cpp:156:12:156:18 | ... + ... |
40-
| test.cpp:156:12:156:18 | ... + ... | test.cpp:158:17:158:18 | & ... indirection |
41-
| test.cpp:158:17:158:18 | & ... indirection | test.cpp:146:26:146:26 | p indirection |
40+
| test.cpp:156:12:156:18 | ... + ... | test.cpp:158:17:158:18 | *& ... |
41+
| test.cpp:158:17:158:18 | *& ... | test.cpp:146:26:146:26 | *p |
4242
| test.cpp:218:23:218:28 | buffer | test.cpp:220:5:220:11 | access to array |
4343
| test.cpp:218:23:218:28 | buffer | test.cpp:221:5:221:11 | access to array |
4444
| test.cpp:229:25:229:29 | array | test.cpp:231:5:231:10 | access to array |
@@ -121,11 +121,11 @@ nodes
121121
| test.cpp:138:13:138:15 | arr | semmle.label | arr |
122122
| test.cpp:143:18:143:21 | asdf | semmle.label | asdf |
123123
| test.cpp:143:18:143:21 | asdf | semmle.label | asdf |
124-
| test.cpp:146:26:146:26 | p indirection | semmle.label | p indirection |
124+
| test.cpp:146:26:146:26 | *p | semmle.label | *p |
125125
| test.cpp:147:4:147:9 | -- ... | semmle.label | -- ... |
126126
| test.cpp:156:12:156:14 | buf | semmle.label | buf |
127127
| test.cpp:156:12:156:18 | ... + ... | semmle.label | ... + ... |
128-
| test.cpp:158:17:158:18 | & ... indirection | semmle.label | & ... indirection |
128+
| test.cpp:158:17:158:18 | *& ... | semmle.label | *& ... |
129129
| test.cpp:218:23:218:28 | buffer | semmle.label | buffer |
130130
| test.cpp:220:5:220:11 | access to array | semmle.label | access to array |
131131
| test.cpp:221:5:221:11 | access to array | semmle.label | access to array |

0 commit comments

Comments
 (0)