Skip to content

Commit 0b3a694

Browse files
committed
Rust: Restrict the scope of DereferenceSink to dereferences of raw pointers
1 parent 09461e9 commit 0b3a694

File tree

3 files changed

+29
-127
lines changed

3 files changed

+29
-127
lines changed

rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ private import codeql.rust.dataflow.FlowSink
1010
private import codeql.rust.Concepts
1111
private import codeql.rust.dataflow.internal.Node
1212
private import codeql.rust.security.Barriers as Barriers
13+
private import codeql.rust.internal.TypeInference as TypeInference
14+
private import codeql.rust.internal.Type
1315

1416
/**
1517
* Provides default sources, sinks and barriers for detecting accesses to
@@ -47,16 +49,22 @@ module AccessInvalidPointer {
4749
ModelsAsDataSource() { sourceNode(this, "pointer-invalidate") }
4850
}
4951

50-
/**
51-
* A pointer access using the unary `*` operator.
52-
*/
52+
/** A raw pointer access using the unary `*` operator. */
5353
private class DereferenceSink extends Sink {
54-
DereferenceSink() { any(DerefExpr p).getExpr() = this.asExpr() }
54+
DereferenceSink() {
55+
exists(Expr p, DerefExpr d | p = d.getExpr() and p = this.asExpr() |
56+
// Dereferencing a raw pointer is an unsafe operation. Hence relevant
57+
// dereferences must occur inside code marked as unsafe.
58+
// See: https://doc.rust-lang.org/reference/types/pointer.html#r-type.pointer.raw.safety
59+
(p.getEnclosingBlock*().isUnsafe() or p.getEnclosingCallable().(Function).isUnsafe()) and
60+
// We are only interested in dereferences of raw pointers, as other uses
61+
// of `*` are safe.
62+
(not exists(TypeInference::inferType(p)) or TypeInference::inferType(p) instanceof PtrType)
63+
)
64+
}
5565
}
5666

57-
/**
58-
* A pointer access from model data.
59-
*/
67+
/** A pointer access from model data. */
6068
private class ModelsAsDataSink extends Sink {
6169
ModelsAsDataSink() { sinkNode(this, "pointer-access") }
6270
}

rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,18 @@ module AccessAfterLifetimeConfig implements DataFlow::ConfigSig {
2626
predicate isSource(DataFlow::Node node) {
2727
node instanceof AccessAfterLifetime::Source and
2828
// exclude cases with sources in macros, since these results are difficult to interpret
29-
not node.asExpr().isFromMacroExpansion()
29+
not node.asExpr().isFromMacroExpansion() and
30+
AccessAfterLifetime::sourceValueScope(node, _, _)
3031
}
3132

3233
predicate isSink(DataFlow::Node node) {
3334
node instanceof AccessAfterLifetime::Sink and
34-
// exclude cases with sinks in macros, since these results are difficult to interpret
35+
// Exclude cases with sinks in macros, since these results are difficult to interpret
3536
not node.asExpr().isFromMacroExpansion() and
36-
// include only results inside `unsafe` blocks, as other results tend to be false positives
37-
(
38-
node.asExpr().getEnclosingBlock*().isUnsafe() or
39-
node.asExpr().getEnclosingCallable().(Function).isUnsafe()
40-
)
37+
// TODO: Remove this condition if it can be done without negatively
38+
// impacting performance. This condition only include nodes with
39+
// corresponding to an expression. This excludes sinks from models-as-data.
40+
exists(node.asExpr())
4141
}
4242

4343
predicate isBarrier(DataFlow::Node barrier) { barrier instanceof AccessAfterLifetime::Barrier }

rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected

Lines changed: 7 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -27,24 +27,6 @@ edges
2727
| deallocation.rs:242:6:242:7 | p1 | deallocation.rs:245:14:245:15 | p1 | provenance | |
2828
| deallocation.rs:242:6:242:7 | p1 | deallocation.rs:252:14:252:15 | p1 | provenance | |
2929
| deallocation.rs:242:30:242:38 | &raw const my_buffer | deallocation.rs:242:6:242:7 | p1 | provenance | |
30-
| deallocation.rs:322:28:322:43 | ...: ... | deallocation.rs:324:18:324:20 | ptr | provenance | |
31-
| deallocation.rs:334:27:334:42 | ...: ... | deallocation.rs:342:18:342:20 | ptr | provenance | |
32-
| deallocation.rs:351:7:351:10 | ptr1 | deallocation.rs:354:4:354:7 | ptr1 | provenance | |
33-
| deallocation.rs:351:7:351:10 | ptr1 | deallocation.rs:354:4:354:7 | ptr1 | provenance | |
34-
| deallocation.rs:351:14:351:33 | &raw mut ... | deallocation.rs:351:7:351:10 | ptr1 | provenance | |
35-
| deallocation.rs:352:7:352:10 | ptr2 | deallocation.rs:355:4:355:7 | ptr2 | provenance | |
36-
| deallocation.rs:352:7:352:10 | ptr2 | deallocation.rs:355:4:355:7 | ptr2 | provenance | |
37-
| deallocation.rs:352:14:352:33 | &raw mut ... | deallocation.rs:352:7:352:10 | ptr2 | provenance | |
38-
| deallocation.rs:354:4:354:7 | ptr1 | deallocation.rs:357:27:357:30 | ptr1 | provenance | |
39-
| deallocation.rs:355:4:355:7 | ptr2 | deallocation.rs:359:26:359:29 | ptr2 | provenance | |
40-
| deallocation.rs:357:27:357:30 | ptr1 | deallocation.rs:322:28:322:43 | ...: ... | provenance | |
41-
| deallocation.rs:359:26:359:29 | ptr2 | deallocation.rs:334:27:334:42 | ...: ... | provenance | |
42-
| deallocation.rs:370:6:370:9 | ptr1 | deallocation.rs:373:13:373:16 | ptr1 | provenance | |
43-
| deallocation.rs:370:6:370:9 | ptr1 | deallocation.rs:381:13:381:16 | ptr1 | provenance | |
44-
| deallocation.rs:370:13:370:28 | &raw mut ... | deallocation.rs:370:6:370:9 | ptr1 | provenance | |
45-
| deallocation.rs:389:6:389:9 | ptr2 | deallocation.rs:392:13:392:16 | ptr2 | provenance | |
46-
| deallocation.rs:389:6:389:9 | ptr2 | deallocation.rs:402:13:402:16 | ptr2 | provenance | |
47-
| deallocation.rs:389:13:389:28 | &raw mut ... | deallocation.rs:389:6:389:9 | ptr2 | provenance | |
4830
| lifetime.rs:21:2:21:18 | return ... | lifetime.rs:54:11:54:30 | get_local_dangling(...) | provenance | |
4931
| lifetime.rs:21:9:21:18 | &my_local1 | lifetime.rs:21:2:21:18 | return ... | provenance | |
5032
| lifetime.rs:27:2:27:22 | return ... | lifetime.rs:55:11:55:34 | get_local_dangling_mut(...) | provenance | |
@@ -80,15 +62,6 @@ edges
8062
| lifetime.rs:94:7:94:16 | &my_local1 | lifetime.rs:94:2:94:3 | p3 | provenance | |
8163
| lifetime.rs:119:15:119:24 | &my_local3 | lifetime.rs:91:17:91:30 | ...: ... | provenance | |
8264
| lifetime.rs:119:27:119:44 | &mut my_local_mut4 | lifetime.rs:91:33:91:44 | ...: ... | provenance | |
83-
| lifetime.rs:127:2:127:24 | return ... | lifetime.rs:139:11:139:21 | get_const(...) | provenance | |
84-
| lifetime.rs:127:9:127:24 | &MY_GLOBAL_CONST | lifetime.rs:127:2:127:24 | return ... | provenance | |
85-
| lifetime.rs:134:3:134:30 | return ... | lifetime.rs:140:11:140:26 | get_static_mut(...) | provenance | |
86-
| lifetime.rs:134:10:134:30 | &mut MY_GLOBAL_STATIC | lifetime.rs:134:3:134:30 | return ... | provenance | |
87-
| lifetime.rs:139:6:139:7 | p1 | lifetime.rs:147:14:147:15 | p1 | provenance | |
88-
| lifetime.rs:139:11:139:21 | get_const(...) | lifetime.rs:139:6:139:7 | p1 | provenance | |
89-
| lifetime.rs:140:6:140:7 | p2 | lifetime.rs:148:14:148:15 | p2 | provenance | |
90-
| lifetime.rs:140:6:140:7 | p2 | lifetime.rs:154:5:154:6 | p2 | provenance | |
91-
| lifetime.rs:140:11:140:26 | get_static_mut(...) | lifetime.rs:140:6:140:7 | p2 | provenance | |
9265
| lifetime.rs:161:17:161:31 | ...: ... | lifetime.rs:164:13:164:15 | ptr | provenance | |
9366
| lifetime.rs:169:17:169:31 | ...: ... | lifetime.rs:172:13:172:15 | ptr | provenance | |
9467
| lifetime.rs:177:17:177:31 | ...: ... | lifetime.rs:180:13:180:15 | ptr | provenance | |
@@ -106,7 +79,6 @@ edges
10679
| lifetime.rs:201:15:201:17 | ptr | lifetime.rs:177:17:177:31 | ...: ... | provenance | |
10780
| lifetime.rs:206:19:206:36 | ...: ... | lifetime.rs:216:16:216:21 | ptr_up | provenance | |
10881
| lifetime.rs:208:6:208:13 | ptr_ours | lifetime.rs:211:33:211:40 | ptr_ours | provenance | |
109-
| lifetime.rs:208:6:208:13 | ptr_ours | lifetime.rs:217:18:217:25 | ptr_ours | provenance | |
11082
| lifetime.rs:208:6:208:13 | ptr_ours | lifetime.rs:225:2:225:16 | return ptr_ours | provenance | |
11183
| lifetime.rs:208:17:208:29 | &my_local_rec | lifetime.rs:208:6:208:13 | ptr_ours | provenance | |
11284
| lifetime.rs:211:7:211:14 | ptr_down | lifetime.rs:218:18:218:25 | ptr_down | provenance | |
@@ -150,42 +122,21 @@ edges
150122
| lifetime.rs:383:3:383:4 | p1 | lifetime.rs:428:7:428:8 | p1 | provenance | |
151123
| lifetime.rs:383:3:383:4 | p1 | lifetime.rs:433:7:433:8 | p1 | provenance | |
152124
| lifetime.rs:383:31:383:37 | &raw mut my_pair | lifetime.rs:383:3:383:4 | p1 | provenance | |
153-
| lifetime.rs:384:3:384:4 | p2 | lifetime.rs:394:14:394:15 | p2 | provenance | |
154-
| lifetime.rs:384:3:384:4 | p2 | lifetime.rs:421:15:421:16 | p2 | provenance | |
155-
| lifetime.rs:384:27:384:35 | &raw const ... | lifetime.rs:384:3:384:4 | p2 | provenance | |
156-
| lifetime.rs:385:3:385:4 | p3 | lifetime.rs:395:14:395:15 | p3 | provenance | |
157-
| lifetime.rs:385:3:385:4 | p3 | lifetime.rs:400:5:400:6 | p3 | provenance | |
158-
| lifetime.rs:385:3:385:4 | p3 | lifetime.rs:400:5:400:6 | p3 | provenance | |
159-
| lifetime.rs:385:31:385:39 | &raw mut ... | lifetime.rs:385:3:385:4 | p3 | provenance | |
160-
| lifetime.rs:400:5:400:6 | p3 | lifetime.rs:422:15:422:16 | p3 | provenance | |
161-
| lifetime.rs:400:5:400:6 | p3 | lifetime.rs:429:6:429:7 | p3 | provenance | |
162125
| lifetime.rs:442:6:442:7 | r1 | lifetime.rs:443:42:443:43 | r1 | provenance | |
163126
| lifetime.rs:442:17:442:23 | &my_val | lifetime.rs:442:6:442:7 | r1 | provenance | |
164127
| lifetime.rs:443:6:443:7 | p1 | lifetime.rs:446:13:446:14 | p1 | provenance | |
165128
| lifetime.rs:443:6:443:7 | p1 | lifetime.rs:450:2:450:10 | return p1 | provenance | |
166129
| lifetime.rs:443:23:443:44 | ...::from_ref(...) | lifetime.rs:443:6:443:7 | p1 | provenance | |
167-
| lifetime.rs:443:42:443:43 | r1 | lifetime.rs:443:23:443:44 | ...::from_ref(...) | provenance | MaD:5 |
130+
| lifetime.rs:443:42:443:43 | r1 | lifetime.rs:443:23:443:44 | ...::from_ref(...) | provenance | MaD:3 |
168131
| lifetime.rs:450:2:450:10 | return p1 | lifetime.rs:454:11:454:29 | get_ptr_from_ref(...) | provenance | |
169132
| lifetime.rs:450:2:450:10 | return p1 | lifetime.rs:460:13:460:31 | get_ptr_from_ref(...) | provenance | |
170133
| lifetime.rs:454:6:454:7 | p1 | lifetime.rs:459:13:459:14 | p1 | provenance | |
171134
| lifetime.rs:454:11:454:29 | get_ptr_from_ref(...) | lifetime.rs:454:6:454:7 | p1 | provenance | |
172135
| lifetime.rs:568:7:568:8 | p2 | lifetime.rs:572:14:572:15 | p2 | provenance | |
173136
| lifetime.rs:568:24:568:33 | &my_local2 | lifetime.rs:568:7:568:8 | p2 | provenance | |
174-
| lifetime.rs:630:3:630:6 | str2 | lifetime.rs:633:15:633:18 | str2 | provenance | |
175-
| lifetime.rs:630:3:630:6 | str2 | lifetime.rs:641:14:641:17 | str2 | provenance | |
176-
| lifetime.rs:630:10:630:25 | &... | lifetime.rs:630:3:630:6 | str2 | provenance | |
177-
| lifetime.rs:654:4:654:7 | str2 | lifetime.rs:655:22:655:25 | str2 | provenance | |
178-
| lifetime.rs:654:11:654:35 | ... + ... | lifetime.rs:654:4:654:7 | str2 | provenance | |
179-
| lifetime.rs:654:31:654:35 | &str1 | lifetime.rs:654:4:654:7 | str2 | provenance | |
180-
| lifetime.rs:654:31:654:35 | &str1 | lifetime.rs:654:11:654:35 | ... + ... | provenance | MaD:2 |
181-
| lifetime.rs:654:31:654:35 | &str1 | lifetime.rs:654:11:654:35 | ... + ... | provenance | MaD:1 |
182137
| lifetime.rs:655:4:655:7 | ref1 | lifetime.rs:659:15:659:18 | ref1 | provenance | |
183138
| lifetime.rs:655:4:655:7 | ref1 | lifetime.rs:667:14:667:17 | ref1 | provenance | |
184-
| lifetime.rs:655:4:655:7 | ref1 [&ref] | lifetime.rs:659:15:659:18 | ref1 | provenance | |
185-
| lifetime.rs:655:4:655:7 | ref1 [&ref] | lifetime.rs:667:14:667:17 | ref1 | provenance | |
186139
| lifetime.rs:655:11:655:25 | &raw const str2 | lifetime.rs:655:4:655:7 | ref1 | provenance | |
187-
| lifetime.rs:655:11:655:25 | &raw const str2 [&ref] | lifetime.rs:655:4:655:7 | ref1 [&ref] | provenance | |
188-
| lifetime.rs:655:22:655:25 | str2 | lifetime.rs:655:11:655:25 | &raw const str2 [&ref] | provenance | |
189140
| lifetime.rs:781:2:781:19 | return ... | lifetime.rs:785:11:785:41 | get_local_for_unsafe_function(...) | provenance | |
190141
| lifetime.rs:781:9:781:19 | &my_local10 | lifetime.rs:781:2:781:19 | return ... | provenance | |
191142
| lifetime.rs:785:6:785:7 | p1 | lifetime.rs:789:12:789:13 | p1 | provenance | |
@@ -197,47 +148,23 @@ edges
197148
| main.rs:18:9:18:10 | p1 [&ref] | main.rs:21:19:21:20 | p1 | provenance | |
198149
| main.rs:18:9:18:10 | p1 [&ref] | main.rs:29:19:29:20 | p1 | provenance | |
199150
| main.rs:18:14:18:29 | ...::as_ptr(...) [&ref] | main.rs:18:9:18:10 | p1 [&ref] | provenance | |
200-
| main.rs:18:26:18:28 | &b1 | main.rs:18:14:18:29 | ...::as_ptr(...) [&ref] | provenance | MaD:4 |
151+
| main.rs:18:26:18:28 | &b1 | main.rs:18:14:18:29 | ...::as_ptr(...) [&ref] | provenance | MaD:2 |
201152
| main.rs:44:9:44:10 | p2 [&ref] | main.rs:51:23:51:24 | p2 | provenance | |
202153
| main.rs:44:9:44:10 | p2 [&ref] | main.rs:64:23:64:24 | p2 | provenance | |
203154
| main.rs:44:14:44:29 | ...::as_ptr(...) [&ref] | main.rs:44:9:44:10 | p2 [&ref] | provenance | |
204-
| main.rs:44:26:44:28 | &b2 | main.rs:44:14:44:29 | ...::as_ptr(...) [&ref] | provenance | MaD:4 |
155+
| main.rs:44:26:44:28 | &b2 | main.rs:44:14:44:29 | ...::as_ptr(...) [&ref] | provenance | MaD:2 |
205156
| main.rs:47:9:47:10 | p3 [&ref] | main.rs:52:23:52:24 | p3 | provenance | |
206157
| main.rs:47:14:47:37 | ...::as_mut_ptr(...) [&ref] | main.rs:47:9:47:10 | p3 [&ref] | provenance | |
207-
| main.rs:47:30:47:36 | &mut b3 | main.rs:47:14:47:37 | ...::as_mut_ptr(...) [&ref] | provenance | MaD:3 |
158+
| main.rs:47:30:47:36 | &mut b3 | main.rs:47:14:47:37 | ...::as_mut_ptr(...) [&ref] | provenance | MaD:1 |
208159
models
209-
| 1 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint |
210-
| 2 | Summary: <_ as core::ops::arith::Add>::add; Argument[0]; ReturnValue; taint |
211-
| 3 | Summary: <alloc::boxed::Box>::as_mut_ptr; Argument[0].Reference.Reference; ReturnValue.Reference; value |
212-
| 4 | Summary: <alloc::boxed::Box>::as_ptr; Argument[0].Reference.Reference; ReturnValue.Reference; value |
213-
| 5 | Summary: core::ptr::from_ref; Argument[0]; ReturnValue; value |
160+
| 1 | Summary: <alloc::boxed::Box>::as_mut_ptr; Argument[0].Reference.Reference; ReturnValue.Reference; value |
161+
| 2 | Summary: <alloc::boxed::Box>::as_ptr; Argument[0].Reference.Reference; ReturnValue.Reference; value |
162+
| 3 | Summary: core::ptr::from_ref; Argument[0]; ReturnValue; value |
214163
nodes
215164
| deallocation.rs:242:6:242:7 | p1 | semmle.label | p1 |
216165
| deallocation.rs:242:30:242:38 | &raw const my_buffer | semmle.label | &raw const my_buffer |
217166
| deallocation.rs:245:14:245:15 | p1 | semmle.label | p1 |
218167
| deallocation.rs:252:14:252:15 | p1 | semmle.label | p1 |
219-
| deallocation.rs:322:28:322:43 | ...: ... | semmle.label | ...: ... |
220-
| deallocation.rs:324:18:324:20 | ptr | semmle.label | ptr |
221-
| deallocation.rs:334:27:334:42 | ...: ... | semmle.label | ...: ... |
222-
| deallocation.rs:342:18:342:20 | ptr | semmle.label | ptr |
223-
| deallocation.rs:351:7:351:10 | ptr1 | semmle.label | ptr1 |
224-
| deallocation.rs:351:14:351:33 | &raw mut ... | semmle.label | &raw mut ... |
225-
| deallocation.rs:352:7:352:10 | ptr2 | semmle.label | ptr2 |
226-
| deallocation.rs:352:14:352:33 | &raw mut ... | semmle.label | &raw mut ... |
227-
| deallocation.rs:354:4:354:7 | ptr1 | semmle.label | ptr1 |
228-
| deallocation.rs:354:4:354:7 | ptr1 | semmle.label | ptr1 |
229-
| deallocation.rs:355:4:355:7 | ptr2 | semmle.label | ptr2 |
230-
| deallocation.rs:355:4:355:7 | ptr2 | semmle.label | ptr2 |
231-
| deallocation.rs:357:27:357:30 | ptr1 | semmle.label | ptr1 |
232-
| deallocation.rs:359:26:359:29 | ptr2 | semmle.label | ptr2 |
233-
| deallocation.rs:370:6:370:9 | ptr1 | semmle.label | ptr1 |
234-
| deallocation.rs:370:13:370:28 | &raw mut ... | semmle.label | &raw mut ... |
235-
| deallocation.rs:373:13:373:16 | ptr1 | semmle.label | ptr1 |
236-
| deallocation.rs:381:13:381:16 | ptr1 | semmle.label | ptr1 |
237-
| deallocation.rs:389:6:389:9 | ptr2 | semmle.label | ptr2 |
238-
| deallocation.rs:389:13:389:28 | &raw mut ... | semmle.label | &raw mut ... |
239-
| deallocation.rs:392:13:392:16 | ptr2 | semmle.label | ptr2 |
240-
| deallocation.rs:402:13:402:16 | ptr2 | semmle.label | ptr2 |
241168
| lifetime.rs:21:2:21:18 | return ... | semmle.label | return ... |
242169
| lifetime.rs:21:9:21:18 | &my_local1 | semmle.label | &my_local1 |
243170
| lifetime.rs:27:2:27:22 | return ... | semmle.label | return ... |
@@ -283,17 +210,6 @@ nodes
283210
| lifetime.rs:110:5:110:6 | p2 | semmle.label | p2 |
284211
| lifetime.rs:119:15:119:24 | &my_local3 | semmle.label | &my_local3 |
285212
| lifetime.rs:119:27:119:44 | &mut my_local_mut4 | semmle.label | &mut my_local_mut4 |
286-
| lifetime.rs:127:2:127:24 | return ... | semmle.label | return ... |
287-
| lifetime.rs:127:9:127:24 | &MY_GLOBAL_CONST | semmle.label | &MY_GLOBAL_CONST |
288-
| lifetime.rs:134:3:134:30 | return ... | semmle.label | return ... |
289-
| lifetime.rs:134:10:134:30 | &mut MY_GLOBAL_STATIC | semmle.label | &mut MY_GLOBAL_STATIC |
290-
| lifetime.rs:139:6:139:7 | p1 | semmle.label | p1 |
291-
| lifetime.rs:139:11:139:21 | get_const(...) | semmle.label | get_const(...) |
292-
| lifetime.rs:140:6:140:7 | p2 | semmle.label | p2 |
293-
| lifetime.rs:140:11:140:26 | get_static_mut(...) | semmle.label | get_static_mut(...) |
294-
| lifetime.rs:147:14:147:15 | p1 | semmle.label | p1 |
295-
| lifetime.rs:148:14:148:15 | p2 | semmle.label | p2 |
296-
| lifetime.rs:154:5:154:6 | p2 | semmle.label | p2 |
297213
| lifetime.rs:161:17:161:31 | ...: ... | semmle.label | ...: ... |
298214
| lifetime.rs:164:13:164:15 | ptr | semmle.label | ptr |
299215
| lifetime.rs:169:17:169:31 | ...: ... | semmle.label | ...: ... |
@@ -316,7 +232,6 @@ nodes
316232
| lifetime.rs:211:18:211:52 | access_ptr_rec(...) | semmle.label | access_ptr_rec(...) |
317233
| lifetime.rs:211:33:211:40 | ptr_ours | semmle.label | ptr_ours |
318234
| lifetime.rs:216:16:216:21 | ptr_up | semmle.label | ptr_up |
319-
| lifetime.rs:217:18:217:25 | ptr_ours | semmle.label | ptr_ours |
320235
| lifetime.rs:218:18:218:25 | ptr_down | semmle.label | ptr_down |
321236
| lifetime.rs:225:2:225:16 | return ptr_ours | semmle.label | return ptr_ours |
322237
| lifetime.rs:230:6:230:14 | ptr_start | semmle.label | ptr_start |
@@ -352,24 +267,13 @@ nodes
352267
| lifetime.rs:317:13:317:18 | result | semmle.label | result |
353268
| lifetime.rs:383:3:383:4 | p1 | semmle.label | p1 |
354269
| lifetime.rs:383:31:383:37 | &raw mut my_pair | semmle.label | &raw mut my_pair |
355-
| lifetime.rs:384:3:384:4 | p2 | semmle.label | p2 |
356-
| lifetime.rs:384:27:384:35 | &raw const ... | semmle.label | &raw const ... |
357-
| lifetime.rs:385:3:385:4 | p3 | semmle.label | p3 |
358-
| lifetime.rs:385:31:385:39 | &raw mut ... | semmle.label | &raw mut ... |
359270
| lifetime.rs:388:15:388:16 | p1 | semmle.label | p1 |
360271
| lifetime.rs:391:15:391:16 | p1 | semmle.label | p1 |
361-
| lifetime.rs:394:14:394:15 | p2 | semmle.label | p2 |
362-
| lifetime.rs:395:14:395:15 | p3 | semmle.label | p3 |
363272
| lifetime.rs:399:6:399:7 | p1 | semmle.label | p1 |
364-
| lifetime.rs:400:5:400:6 | p3 | semmle.label | p3 |
365-
| lifetime.rs:400:5:400:6 | p3 | semmle.label | p3 |
366273
| lifetime.rs:401:6:401:7 | p1 | semmle.label | p1 |
367274
| lifetime.rs:411:16:411:17 | p1 | semmle.label | p1 |
368275
| lifetime.rs:416:16:416:17 | p1 | semmle.label | p1 |
369-
| lifetime.rs:421:15:421:16 | p2 | semmle.label | p2 |
370-
| lifetime.rs:422:15:422:16 | p3 | semmle.label | p3 |
371276
| lifetime.rs:428:7:428:8 | p1 | semmle.label | p1 |
372-
| lifetime.rs:429:6:429:7 | p3 | semmle.label | p3 |
373277
| lifetime.rs:433:7:433:8 | p1 | semmle.label | p1 |
374278
| lifetime.rs:442:6:442:7 | r1 | semmle.label | r1 |
375279
| lifetime.rs:442:17:442:23 | &my_val | semmle.label | &my_val |
@@ -385,18 +289,8 @@ nodes
385289
| lifetime.rs:568:7:568:8 | p2 | semmle.label | p2 |
386290
| lifetime.rs:568:24:568:33 | &my_local2 | semmle.label | &my_local2 |
387291
| lifetime.rs:572:14:572:15 | p2 | semmle.label | p2 |
388-
| lifetime.rs:630:3:630:6 | str2 | semmle.label | str2 |
389-
| lifetime.rs:630:10:630:25 | &... | semmle.label | &... |
390-
| lifetime.rs:633:15:633:18 | str2 | semmle.label | str2 |
391-
| lifetime.rs:641:14:641:17 | str2 | semmle.label | str2 |
392-
| lifetime.rs:654:4:654:7 | str2 | semmle.label | str2 |
393-
| lifetime.rs:654:11:654:35 | ... + ... | semmle.label | ... + ... |
394-
| lifetime.rs:654:31:654:35 | &str1 | semmle.label | &str1 |
395292
| lifetime.rs:655:4:655:7 | ref1 | semmle.label | ref1 |
396-
| lifetime.rs:655:4:655:7 | ref1 [&ref] | semmle.label | ref1 [&ref] |
397293
| lifetime.rs:655:11:655:25 | &raw const str2 | semmle.label | &raw const str2 |
398-
| lifetime.rs:655:11:655:25 | &raw const str2 [&ref] | semmle.label | &raw const str2 [&ref] |
399-
| lifetime.rs:655:22:655:25 | str2 | semmle.label | str2 |
400294
| lifetime.rs:659:15:659:18 | ref1 | semmle.label | ref1 |
401295
| lifetime.rs:667:14:667:17 | ref1 | semmle.label | ref1 |
402296
| lifetime.rs:781:2:781:19 | return ... | semmle.label | return ... |

0 commit comments

Comments
 (0)