Commit cb878ed
Automerge: [Frontend/Offloading] Fix use-after-reallocation in sycl::writeSymbolTable (#197612)
`writeSymbolTable` took raw pointers into the `SmallString` buffer
(`Header`, `Entries`) and then called `Out.append()` / `Out.push_back()`
inside the loop to write string data. When the `SmallString` needed to
grow, it reallocated, silently invalidating those pointers. All writes
through `Entries[I]` after the first reallocation were undefined
behaviour; UBSAN caught this as a crash (exit code -6 / SIGABRT) on the
sanitizer-x86_64-linux-bootstrap-ubsan builder.
The fix pre-computes the total buffer size (header + entry array +
all null-terminated name strings) and calls `reserve()` before any
pointers are taken, guaranteeing that the subsequent `append` and
`push_back` calls cannot trigger a reallocation.1 file changed
Lines changed: 6 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
462 | 462 | | |
463 | 463 | | |
464 | 464 | | |
465 | | - | |
466 | | - | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
467 | 471 | | |
468 | 472 | | |
469 | 473 | | |
| |||
0 commit comments