diff options
author | Jinsong Ji <jinsong.ji@intel.com> | 2025-03-05 20:52:11 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-05 20:52:11 -0500 |
commit | 560cfd509916cd75bcd79143a91def5f3d8b9ba1 (patch) | |
tree | 39b9caf8671e340c7caa53d338afaba67a47c778 /clang/tools/c-index-test/c-index-test.c | |
parent | 213028556419cb734be5aadcfd9798b40a8ebc31 (diff) | |
download | llvm-560cfd509916cd75bcd79143a91def5f3d8b9ba1.zip llvm-560cfd509916cd75bcd79143a91def5f3d8b9ba1.tar.gz llvm-560cfd509916cd75bcd79143a91def5f3d8b9ba1.tar.bz2 |
c-index-test: fix buffer overflow (#129922)
We should not try to overwrite the pointer of struct, also need to add 1
for end of line.
Diffstat (limited to 'clang/tools/c-index-test/c-index-test.c')
-rw-r--r-- | clang/tools/c-index-test/c-index-test.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/clang/tools/c-index-test/c-index-test.c b/clang/tools/c-index-test/c-index-test.c index 942500f..50f32c0 100644 --- a/clang/tools/c-index-test/c-index-test.c +++ b/clang/tools/c-index-test/c-index-test.c @@ -3555,11 +3555,12 @@ static CXIdxClientContainer makeClientContainer(CXClientData *client_data, clang_indexLoc_getFileLocation(loc, &file, 0, &line, &column, 0); len = sizeof(IndexDataStringList) + strlen(name) + digitCount(line) + - digitCount(column) + 2; + digitCount(column) + 3; node = (IndexDataStringList *)malloc(len); assert(node); newStr = node->data; - snprintf(newStr, len, "%s:%d:%d", name, line, column); + snprintf(newStr, len - sizeof(IndexDataStringList), "%s:%d:%d", name, line, + column); /* Remember string so it can be freed later. */ index_data = (IndexData *)client_data; |