Commit 0e8c07c
Github Executorch
Use EValue::tryTo* to fix TOB-EXECUTORCH-6/7/8
Malformed PTE files can contain EValues whose tag doesn't match what
the caller expects. Three runtime paths consumed those tags without
validation and called into abort-on-mismatch accessors, turning every
tag confusion into a process abort (DoS):
- parseTensorList (tensor_parser_exec_aten.cpp) — called .toTensor()
on each element index of a TensorList.
- parseListOptionalType (tensor_parser.h) — called .toOptional<T>()
on each element index of an OptionalTensorList.
- FreeCall instruction handler (method.cpp) — called .toTensor()
on the value index being freed.
Replace each with the Result-returning tryTo* counterpart so tag
mismatch returns Error::InvalidType / Error::InvalidProgram up to
the caller rather than aborting.
Unit tests cover parseTensorList and parseListOptionalType receiving
a non-matching EValue and expect Error::InvalidType.
Addresses TOB-EXECUTORCH-6, TOB-EXECUTORCH-7, TOB-EXECUTORCH-8.
Authored-with: Claude
ghstack-source-id: c136be3
ghstack-comment-id: 4292675954
Pull-Request: #190401 parent 706cd92 commit 0e8c07c
4 files changed
Lines changed: 87 additions & 16 deletions
File tree
- runtime/executor
- test
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
210 | 210 | | |
211 | 211 | | |
212 | 212 | | |
213 | | - | |
214 | | - | |
215 | | - | |
216 | | - | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
217 | 218 | | |
218 | 219 | | |
219 | 220 | | |
| |||
492 | 493 | | |
493 | 494 | | |
494 | 495 | | |
495 | | - | |
496 | | - | |
497 | | - | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
498 | 499 | | |
499 | 500 | | |
500 | 501 | | |
| |||
1538 | 1539 | | |
1539 | 1540 | | |
1540 | 1541 | | |
1541 | | - | |
1542 | | - | |
1543 | | - | |
1544 | | - | |
1545 | | - | |
| 1542 | + | |
| 1543 | + | |
1546 | 1544 | | |
1547 | 1545 | | |
1548 | 1546 | | |
1549 | 1547 | | |
1550 | | - | |
| 1548 | + | |
| 1549 | + | |
1551 | 1550 | | |
| 1551 | + | |
1552 | 1552 | | |
1553 | 1553 | | |
1554 | 1554 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
97 | 97 | | |
98 | 98 | | |
99 | 99 | | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
100 | 104 | | |
101 | | - | |
| 105 | + | |
102 | 106 | | |
103 | 107 | | |
104 | 108 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
98 | 98 | | |
99 | 99 | | |
100 | 100 | | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
101 | 106 | | |
102 | 107 | | |
103 | | - | |
104 | | - | |
| 108 | + | |
| 109 | + | |
105 | 110 | | |
106 | 111 | | |
107 | 112 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
| 12 | + | |
11 | 13 | | |
12 | 14 | | |
13 | 15 | | |
| |||
19 | 21 | | |
20 | 22 | | |
21 | 23 | | |
| 24 | + | |
22 | 25 | | |
23 | 26 | | |
24 | 27 | | |
25 | 28 | | |
26 | 29 | | |
27 | 30 | | |
28 | 31 | | |
| 32 | + | |
29 | 33 | | |
| 34 | + | |
30 | 35 | | |
31 | 36 | | |
32 | 37 | | |
| |||
223 | 228 | | |
224 | 229 | | |
225 | 230 | | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
0 commit comments