Commit 6847568
Fix GatherND sentinel-value collision enabling OOB memory read
GatherND used err_index==0 as a sentinel for 'no validation error',
but 0 is also a valid tensor index. When a dimension has size 0, index
0 correctly fails the bounds check (0 >= 0), but err_index is set to 0
which is indistinguishable from success. This allowed the operator to
proceed with an out-of-bounds memcpy, leaking process heap memory.
Replace the sentinel pattern with a std::atomic<bool> error flag that
is independent of the index value. The err_index variable is retained
solely for the error message.
Files changed:
- onnxruntime/core/providers/cpu/tensor/gather_nd.cc
- onnxruntime/test/providers/cpu/tensor/gather_nd_op_test.cc
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>1 parent ff87826 commit 6847568
2 files changed
Lines changed: 46 additions & 2 deletions
File tree
- onnxruntime
- core/providers/cpu/tensor
- test/providers/cpu/tensor
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
| 3 | + | |
3 | 4 | | |
4 | 5 | | |
5 | 6 | | |
| |||
85 | 86 | | |
86 | 87 | | |
87 | 88 | | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
88 | 94 | | |
89 | 95 | | |
90 | 96 | | |
| |||
104 | 110 | | |
105 | 111 | | |
106 | 112 | | |
| 113 | + | |
107 | 114 | | |
108 | 115 | | |
109 | 116 | | |
| |||
123 | 130 | | |
124 | 131 | | |
125 | 132 | | |
126 | | - | |
127 | | - | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
128 | 136 | | |
129 | 137 | | |
130 | 138 | | |
| |||
Lines changed: 36 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
372 | 372 | | |
373 | 373 | | |
374 | 374 | | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
375 | 411 | | |
376 | 412 | | |
0 commit comments