Skip to content

Commit 6a5a100

Browse files
committed
Rust: Refine the barrier guard.
1 parent f7d3a51 commit 6a5a100

File tree

3 files changed

+154
-18
lines changed

3 files changed

+154
-18
lines changed

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

Lines changed: 51 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,61 @@ module UncontrolledAllocationSize {
3535
}
3636

3737
/**
38-
* A barrier for uncontrolled allocation size that is an guard / bound check.
38+
* A barrier for uncontrolled allocation size that is an upper bound check / guard.
3939
*/
40-
private class BoundCheckBarrier extends Barrier {
41-
BoundCheckBarrier() { this = DataFlow::BarrierGuard<isBoundCheck/3>::getABarrierNode() }
40+
private class UpperBoundCheckBarrier extends Barrier {
41+
UpperBoundCheckBarrier() {
42+
this = DataFlow::BarrierGuard<isUpperBoundCheck/3>::getABarrierNode()
43+
}
4244
}
4345

44-
private predicate isBoundCheck(CfgNodes::AstCfgNode g, Cfg::CfgNode node, boolean branch) {
45-
// any comparison (`g` / `cmp`) guards the expression on either side (`node`)
46-
exists(BinaryExpr cmp |
47-
g = cmp.getACfgNode() and
46+
/**
47+
* Gets the operand on the "greater" (or "greater-or-equal") side
48+
* of this relational expression, that is, the side that is larger
49+
* if the overall expression evaluates to `true`; for example on
50+
* `x <= 20` this is the `20`, and on `y > 0` it is `y`.
51+
*/
52+
private Expr getGreaterOperand(BinaryExpr op) {
53+
op.getOperatorName() = ["<", "<="] and
54+
result = op.getRhs()
55+
or
56+
op.getOperatorName() = [">", ">="] and
57+
result = op.getLhs()
58+
}
59+
60+
/**
61+
* Gets the operand on the "lesser" (or "lesser-or-equal") side
62+
* of this relational expression, that is, the side that is smaller
63+
* if the overall expression evaluates to `true`; for example on
64+
* `x <= 20` this is `x`, and on `y > 0` it is the `0`.
65+
*/
66+
private Expr getLesserOperand(BinaryExpr op) {
67+
op.getOperatorName() = ["<", "<="] and
68+
result = op.getLhs()
69+
or
70+
op.getOperatorName() = [">", ">="] and
71+
result = op.getRhs()
72+
}
73+
74+
/**
75+
* Holds if comparison `g` having result `branch` indicates an upper bound for the sub-expression
76+
* `node`. For example when the comparison `x < 10` is true, we have an upper bound for `x`.
77+
*/
78+
private predicate isUpperBoundCheck(CfgNodes::AstCfgNode g, Cfg::CfgNode node, boolean branch) {
79+
exists(BinaryExpr cmp | g = cmp.getACfgNode() |
80+
node = getLesserOperand(cmp).getACfgNode() and
81+
branch = true
82+
or
83+
node = getGreaterOperand(cmp).getACfgNode() and
84+
branch = false
85+
or
86+
cmp.getOperatorName() = "==" and
87+
[cmp.getLhs(), cmp.getRhs()].getACfgNode() = node and
88+
branch = true
89+
or
90+
cmp.getOperatorName() = "!=" and
4891
[cmp.getLhs(), cmp.getRhs()].getACfgNode() = node and
49-
branch = [true, false]
92+
branch = false
5093
)
5194
}
5295
}

rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected

Lines changed: 96 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,18 @@
1818
| main.rs:64:13:64:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:64:13:64:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
1919
| main.rs:65:13:65:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:65:13:65:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
2020
| main.rs:68:13:68:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:68:13:68:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
21+
| main.rs:88:13:88:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:88:13:88:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
2122
| main.rs:96:17:96:33 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:96:17:96:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
2223
| main.rs:102:17:102:33 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:102:17:102:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
24+
| main.rs:103:17:103:33 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:103:17:103:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
2325
| main.rs:109:17:109:33 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:109:17:109:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
2426
| main.rs:111:17:111:33 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:111:17:111:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
2527
| main.rs:146:17:146:33 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:146:17:146:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
28+
| main.rs:148:17:148:33 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:148:17:148:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
29+
| main.rs:152:13:152:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:152:13:152:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
30+
| main.rs:155:13:155:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:155:13:155:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
31+
| main.rs:162:17:162:33 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:162:17:162:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
32+
| main.rs:169:17:169:33 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:169:17:169:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
2633
| main.rs:177:13:177:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:177:13:177:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
2734
| main.rs:193:32:193:36 | alloc | main.rs:317:13:317:26 | ...::args | main.rs:193:32:193:36 | alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
2835
| main.rs:194:32:194:43 | alloc_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:194:32:194:43 | alloc_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value |
@@ -133,7 +140,19 @@ edges
133140
| main.rs:67:14:67:56 | ... .unwrap(...) | main.rs:67:9:67:10 | l4 | provenance | |
134141
| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:18 |
135142
| main.rs:68:31:68:32 | l4 | main.rs:68:13:68:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 |
143+
| main.rs:86:35:86:42 | ...: usize | main.rs:87:54:87:54 | v | provenance | |
144+
| main.rs:87:9:87:14 | layout | main.rs:88:31:88:36 | layout | provenance | |
145+
| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap(...) | provenance | MaD:31 |
146+
| main.rs:87:18:87:67 | ... .unwrap(...) | main.rs:87:9:87:14 | layout | provenance | |
147+
| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:23 |
148+
| main.rs:88:31:88:36 | layout | main.rs:88:13:88:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 |
136149
| main.rs:91:38:91:45 | ...: usize | main.rs:92:47:92:47 | v | provenance | |
150+
| main.rs:91:38:91:45 | ...: usize | main.rs:101:51:101:51 | v | provenance | |
151+
| main.rs:91:38:91:45 | ...: usize | main.rs:105:33:105:33 | v | provenance | |
152+
| main.rs:91:38:91:45 | ...: usize | main.rs:145:51:145:51 | v | provenance | |
153+
| main.rs:91:38:91:45 | ...: usize | main.rs:151:62:151:62 | v | provenance | |
154+
| main.rs:91:38:91:45 | ...: usize | main.rs:154:62:154:62 | v | provenance | |
155+
| main.rs:91:38:91:45 | ...: usize | main.rs:161:55:161:55 | v | provenance | |
137156
| main.rs:92:9:92:10 | l1 | main.rs:96:35:96:36 | l1 | provenance | |
138157
| main.rs:92:9:92:10 | l1 | main.rs:102:35:102:36 | l1 | provenance | |
139158
| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap(...) | provenance | MaD:31 |
@@ -142,15 +161,45 @@ edges
142161
| main.rs:96:35:96:36 | l1 | main.rs:96:17:96:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 |
143162
| main.rs:96:35:96:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | |
144163
| main.rs:96:35:96:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | |
164+
| main.rs:101:13:101:14 | l3 | main.rs:103:35:103:36 | l3 | provenance | |
165+
| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap(...) | provenance | MaD:31 |
166+
| main.rs:101:18:101:61 | ... .unwrap(...) | main.rs:101:13:101:14 | l3 | provenance | |
167+
| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:18 |
145168
| main.rs:102:35:102:36 | l1 | main.rs:102:17:102:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 |
146169
| main.rs:102:35:102:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | |
147170
| main.rs:102:35:102:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | |
171+
| main.rs:103:35:103:36 | l3 | main.rs:103:17:103:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 |
172+
| main.rs:105:33:105:33 | v | main.rs:86:35:86:42 | ...: usize | provenance | |
148173
| main.rs:109:35:109:36 | l1 | main.rs:109:17:109:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 |
149174
| main.rs:109:35:109:36 | l1 | main.rs:146:35:146:36 | l1 | provenance | |
150175
| main.rs:111:35:111:36 | l1 | main.rs:111:17:111:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 |
151176
| main.rs:111:35:111:36 | l1 | main.rs:146:35:146:36 | l1 | provenance | |
177+
| main.rs:145:13:145:14 | l9 | main.rs:148:35:148:36 | l9 | provenance | |
178+
| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap(...) | provenance | MaD:31 |
179+
| main.rs:145:18:145:61 | ... .unwrap(...) | main.rs:145:13:145:14 | l9 | provenance | |
180+
| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:18 |
152181
| main.rs:146:35:146:36 | l1 | main.rs:146:17:146:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 |
153182
| main.rs:146:35:146:36 | l1 | main.rs:177:31:177:32 | l1 | provenance | |
183+
| main.rs:148:35:148:36 | l9 | main.rs:148:17:148:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 |
184+
| main.rs:151:9:151:11 | l10 | main.rs:152:31:152:33 | l10 | provenance | |
185+
| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap(...) | provenance | MaD:31 |
186+
| main.rs:151:15:151:78 | ... .unwrap(...) | main.rs:151:9:151:11 | l10 | provenance | |
187+
| main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:18 |
188+
| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:34 |
189+
| main.rs:152:31:152:33 | l10 | main.rs:152:13:152:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 |
190+
| main.rs:154:9:154:11 | l11 | main.rs:155:31:155:33 | l11 | provenance | |
191+
| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap(...) | provenance | MaD:31 |
192+
| main.rs:154:15:154:78 | ... .unwrap(...) | main.rs:154:9:154:11 | l11 | provenance | |
193+
| main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:18 |
194+
| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:33 |
195+
| main.rs:155:31:155:33 | l11 | main.rs:155:13:155:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 |
196+
| main.rs:161:13:161:15 | l13 | main.rs:162:35:162:37 | l13 | provenance | |
197+
| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap(...) | provenance | MaD:31 |
198+
| main.rs:161:19:161:68 | ... .unwrap(...) | main.rs:161:13:161:15 | l13 | provenance | |
199+
| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:23 |
200+
| main.rs:162:35:162:37 | l13 | main.rs:162:17:162:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 |
201+
| main.rs:162:35:162:37 | l13 | main.rs:169:35:169:37 | l13 | provenance | |
202+
| main.rs:169:35:169:37 | l13 | main.rs:169:17:169:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 |
154203
| main.rs:177:31:177:32 | l1 | main.rs:177:13:177:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 |
155204
| main.rs:183:29:183:36 | ...: usize | main.rs:192:46:192:46 | v | provenance | |
156205
| main.rs:192:9:192:10 | l2 | main.rs:193:38:193:39 | l2 | provenance | |
@@ -197,7 +246,7 @@ edges
197246
| main.rs:282:54:282:62 | num_bytes | main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | provenance | MaD:23 |
198247
| main.rs:284:40:284:45 | layout | main.rs:284:22:284:38 | ...::alloc | provenance | MaD:3 Sink:MaD:3 |
199248
| main.rs:308:25:308:38 | ...::args | main.rs:308:25:308:40 | ...::args(...) [element] | provenance | Src:MaD:16 |
200-
| main.rs:308:25:308:40 | ...::args(...) [element] | main.rs:308:25:308:47 | ... .nth(...) [Some] | provenance | MaD:33 |
249+
| main.rs:308:25:308:40 | ...::args(...) [element] | main.rs:308:25:308:47 | ... .nth(...) [Some] | provenance | MaD:35 |
201250
| main.rs:308:25:308:47 | ... .nth(...) [Some] | main.rs:308:25:308:74 | ... .unwrap_or(...) | provenance | MaD:29 |
202251
| main.rs:308:25:308:74 | ... .unwrap_or(...) | main.rs:279:24:279:41 | ...: String | provenance | |
203252
| main.rs:317:9:317:9 | v | main.rs:320:34:320:34 | v | provenance | |
@@ -206,7 +255,7 @@ edges
206255
| main.rs:317:9:317:9 | v | main.rs:323:27:323:27 | v | provenance | |
207256
| main.rs:317:9:317:9 | v | main.rs:324:25:324:25 | v | provenance | |
208257
| main.rs:317:13:317:26 | ...::args | main.rs:317:13:317:28 | ...::args(...) [element] | provenance | Src:MaD:16 |
209-
| main.rs:317:13:317:28 | ...::args(...) [element] | main.rs:317:13:317:35 | ... .nth(...) [Some] | provenance | MaD:33 |
258+
| main.rs:317:13:317:28 | ...::args(...) [element] | main.rs:317:13:317:35 | ... .nth(...) [Some] | provenance | MaD:35 |
210259
| main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:29 |
211260
| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse(...) [Ok] | provenance | MaD:32 |
212261
| main.rs:317:13:317:82 | ... .parse(...) [Ok] | main.rs:317:13:317:91 | ... .unwrap(...) | provenance | MaD:31 |
@@ -249,7 +298,9 @@ models
249298
| 30 | Summary: lang:core; <crate::result::Result>::expect; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue; value |
250299
| 31 | Summary: lang:core; <crate::result::Result>::unwrap; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue; value |
251300
| 32 | Summary: lang:core; <str>::parse; Argument[self]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint |
252-
| 33 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Field[crate::option::Option::Some(0)]; value |
301+
| 33 | Summary: lang:core; crate::cmp::max; Argument[0]; ReturnValue; value |
302+
| 34 | Summary: lang:core; crate::cmp::min; Argument[0]; ReturnValue; value |
303+
| 35 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Field[crate::option::Option::Some(0)]; value |
253304
nodes
254305
| main.rs:12:36:12:43 | ...: usize | semmle.label | ...: usize |
255306
| main.rs:18:13:18:31 | ...::realloc | semmle.label | ...::realloc |
@@ -342,21 +393,63 @@ nodes
342393
| main.rs:67:46:67:46 | v | semmle.label | v |
343394
| main.rs:68:13:68:29 | ...::alloc | semmle.label | ...::alloc |
344395
| main.rs:68:31:68:32 | l4 | semmle.label | l4 |
396+
| main.rs:86:35:86:42 | ...: usize | semmle.label | ...: usize |
397+
| main.rs:87:9:87:14 | layout | semmle.label | layout |
398+
| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | semmle.label | ...::from_size_align(...) [Ok] |
399+
| main.rs:87:18:87:67 | ... .unwrap(...) | semmle.label | ... .unwrap(...) |
400+
| main.rs:87:54:87:54 | v | semmle.label | v |
401+
| main.rs:88:13:88:29 | ...::alloc | semmle.label | ...::alloc |
402+
| main.rs:88:31:88:36 | layout | semmle.label | layout |
345403
| main.rs:91:38:91:45 | ...: usize | semmle.label | ...: usize |
346404
| main.rs:92:9:92:10 | l1 | semmle.label | l1 |
347405
| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | semmle.label | ...::array::<...>(...) [Ok] |
348406
| main.rs:92:14:92:57 | ... .unwrap(...) | semmle.label | ... .unwrap(...) |
349407
| main.rs:92:47:92:47 | v | semmle.label | v |
350408
| main.rs:96:17:96:33 | ...::alloc | semmle.label | ...::alloc |
351409
| main.rs:96:35:96:36 | l1 | semmle.label | l1 |
410+
| main.rs:101:13:101:14 | l3 | semmle.label | l3 |
411+
| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | semmle.label | ...::array::<...>(...) [Ok] |
412+
| main.rs:101:18:101:61 | ... .unwrap(...) | semmle.label | ... .unwrap(...) |
413+
| main.rs:101:51:101:51 | v | semmle.label | v |
352414
| main.rs:102:17:102:33 | ...::alloc | semmle.label | ...::alloc |
353415
| main.rs:102:35:102:36 | l1 | semmle.label | l1 |
416+
| main.rs:103:17:103:33 | ...::alloc | semmle.label | ...::alloc |
417+
| main.rs:103:35:103:36 | l3 | semmle.label | l3 |
418+
| main.rs:105:33:105:33 | v | semmle.label | v |
354419
| main.rs:109:17:109:33 | ...::alloc | semmle.label | ...::alloc |
355420
| main.rs:109:35:109:36 | l1 | semmle.label | l1 |
356421
| main.rs:111:17:111:33 | ...::alloc | semmle.label | ...::alloc |
357422
| main.rs:111:35:111:36 | l1 | semmle.label | l1 |
423+
| main.rs:145:13:145:14 | l9 | semmle.label | l9 |
424+
| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | semmle.label | ...::array::<...>(...) [Ok] |
425+
| main.rs:145:18:145:61 | ... .unwrap(...) | semmle.label | ... .unwrap(...) |
426+
| main.rs:145:51:145:51 | v | semmle.label | v |
358427
| main.rs:146:17:146:33 | ...::alloc | semmle.label | ...::alloc |
359428
| main.rs:146:35:146:36 | l1 | semmle.label | l1 |
429+
| main.rs:148:17:148:33 | ...::alloc | semmle.label | ...::alloc |
430+
| main.rs:148:35:148:36 | l9 | semmle.label | l9 |
431+
| main.rs:151:9:151:11 | l10 | semmle.label | l10 |
432+
| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | semmle.label | ...::array::<...>(...) [Ok] |
433+
| main.rs:151:15:151:78 | ... .unwrap(...) | semmle.label | ... .unwrap(...) |
434+
| main.rs:151:48:151:68 | ...::min(...) | semmle.label | ...::min(...) |
435+
| main.rs:151:62:151:62 | v | semmle.label | v |
436+
| main.rs:152:13:152:29 | ...::alloc | semmle.label | ...::alloc |
437+
| main.rs:152:31:152:33 | l10 | semmle.label | l10 |
438+
| main.rs:154:9:154:11 | l11 | semmle.label | l11 |
439+
| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | semmle.label | ...::array::<...>(...) [Ok] |
440+
| main.rs:154:15:154:78 | ... .unwrap(...) | semmle.label | ... .unwrap(...) |
441+
| main.rs:154:48:154:68 | ...::max(...) | semmle.label | ...::max(...) |
442+
| main.rs:154:62:154:62 | v | semmle.label | v |
443+
| main.rs:155:13:155:29 | ...::alloc | semmle.label | ...::alloc |
444+
| main.rs:155:31:155:33 | l11 | semmle.label | l11 |
445+
| main.rs:161:13:161:15 | l13 | semmle.label | l13 |
446+
| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | semmle.label | ...::from_size_align(...) [Ok] |
447+
| main.rs:161:19:161:68 | ... .unwrap(...) | semmle.label | ... .unwrap(...) |
448+
| main.rs:161:55:161:55 | v | semmle.label | v |
449+
| main.rs:162:17:162:33 | ...::alloc | semmle.label | ...::alloc |
450+
| main.rs:162:35:162:37 | l13 | semmle.label | l13 |
451+
| main.rs:169:17:169:33 | ...::alloc | semmle.label | ...::alloc |
452+
| main.rs:169:35:169:37 | l13 | semmle.label | l13 |
360453
| main.rs:177:13:177:29 | ...::alloc | semmle.label | ...::alloc |
361454
| main.rs:177:31:177:32 | l1 | semmle.label | l1 |
362455
| main.rs:183:29:183:36 | ...: usize | semmle.label | ...: usize |

0 commit comments

Comments
 (0)