aboutsummaryrefslogtreecommitdiff
path: root/clang/tools/c-index-test/c-index-test.c
diff options
context:
space:
mode:
authorJinsong Ji <jinsong.ji@intel.com>2025-03-05 20:52:11 -0500
committerGitHub <noreply@github.com>2025-03-05 20:52:11 -0500
commit560cfd509916cd75bcd79143a91def5f3d8b9ba1 (patch)
tree39b9caf8671e340c7caa53d338afaba67a47c778 /clang/tools/c-index-test/c-index-test.c
parent213028556419cb734be5aadcfd9798b40a8ebc31 (diff)
downloadllvm-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.c5
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;