[clang] c-index-test: fix buffer overflow (PR #129922)

Jinsong Ji via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 5 12:12:53 PST 2025


https://github.com/jsji updated https://github.com/llvm/llvm-project/pull/129922

>From 7d8157357b4b9ba1462e0b4d0fafa7650d7f6b40 Mon Sep 17 00:00:00 2001
From: Jinsong Ji <jinsong.ji at intel.com>
Date: Wed, 5 Mar 2025 11:49:19 -0800
Subject: [PATCH 1/2] c-index-test: fix buffer overflow

---
 clang/tools/c-index-test/c-index-test.c | 4 ++--
 1 file changed, 2 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 942500f2975e4..eb1d3de09acd0 100644
--- a/clang/tools/c-index-test/c-index-test.c
+++ b/clang/tools/c-index-test/c-index-test.c
@@ -3555,11 +3555,11 @@ 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;

>From 113bb5a51708bdee06b8c6e1d09f743141c637b1 Mon Sep 17 00:00:00 2001
From: Jinsong Ji <jinsong.ji at intel.com>
Date: Wed, 5 Mar 2025 12:12:39 -0800
Subject: [PATCH 2/2] clangformat

---
 clang/tools/c-index-test/c-index-test.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/clang/tools/c-index-test/c-index-test.c b/clang/tools/c-index-test/c-index-test.c
index eb1d3de09acd0..50f32c0a20e5a 100644
--- a/clang/tools/c-index-test/c-index-test.c
+++ b/clang/tools/c-index-test/c-index-test.c
@@ -3559,7 +3559,8 @@ static CXIdxClientContainer makeClientContainer(CXClientData *client_data,
   node = (IndexDataStringList *)malloc(len);
   assert(node);
   newStr = node->data;
-  snprintf(newStr, len - sizeof(IndexDataStringList) , "%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;



More information about the cfe-commits mailing list