)]}'
{
  "commit": "02fa93fcf4f925ad916fa52d0dd63be1f01efb8c",
  "tree": "ecd3bd50e979bf015c7b323c35887b06409b727a",
  "parents": [
    "95621ee62fbf84a7b63783274a1906706184bfd2"
  ],
  "author": {
    "name": "Yury Plyakhin",
    "email": "yury.plyakhin@intel.com",
    "time": "Thu May 14 09:32:57 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu May 14 09:32:57 2026 -0700"
  },
  "message": "[Frontend/Offloading] Fix use-after-reallocation in sycl::writeSymbolTable (#197612)\n\n`writeSymbolTable` took raw pointers into the `SmallString` buffer\n(`Header`, `Entries`) and then called `Out.append()` / `Out.push_back()`\ninside the loop to write string data. When the `SmallString` needed to\ngrow, it reallocated, silently invalidating those pointers. All writes\n  through `Entries[I]` after the first reallocation were undefined\nbehaviour; UBSAN caught this as a crash (exit code -6 / SIGABRT) on the\n  sanitizer-x86_64-linux-bootstrap-ubsan builder.\n\n  The fix pre-computes the total buffer size (header + entry array +\n  all null-terminated name strings) and calls `reserve()` before any\n  pointers are taken, guaranteeing that the subsequent `append` and\n  `push_back` calls cannot trigger a reallocation.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d689d1bb192d637a52c89e8208f3a3cccefafb40",
      "old_mode": 33188,
      "old_path": "llvm/lib/Frontend/Offloading/Utility.cpp",
      "new_id": "909af0237910fed6da6f987a05d393a53bbf29d8",
      "new_mode": 33188,
      "new_path": "llvm/lib/Frontend/Offloading/Utility.cpp"
    }
  ]
}
