https://github.com/vitalybuka updated 
https://github.com/llvm/llvm-project/pull/127078

>From a831b96cc2eb4b65e7157ee3cb519cf9b4a6af76 Mon Sep 17 00:00:00 2001
From: Vitaly Buka <vitalyb...@gmail.com>
Date: Thu, 13 Feb 2025 07:42:46 -0800
Subject: [PATCH] Revert "Revert "[libclang] Always Dup in
 createRef(StringRef)" (#127076)"

This reverts commit a1345eb240c9456ce1c339106f066217eb5e6984.
---
 clang/docs/ReleaseNotes.rst       |  3 +++
 clang/tools/libclang/CXString.cpp | 14 +-------------
 2 files changed, 4 insertions(+), 13 deletions(-)

diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 03bddbe3e983a..e41ad384b84f7 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -257,6 +257,9 @@ clang-format
 libclang
 --------
 
+- Fixed a buffer overflow in ``CXString`` implementation. The fix may result in
+  increased memory allocation.
+
 Code Completion
 ---------------
 
diff --git a/clang/tools/libclang/CXString.cpp 
b/clang/tools/libclang/CXString.cpp
index 5e427957a1092..aaa8f8eeb67a1 100644
--- a/clang/tools/libclang/CXString.cpp
+++ b/clang/tools/libclang/CXString.cpp
@@ -87,19 +87,7 @@ CXString createRef(StringRef String) {
   if (String.empty())
     return createEmpty();
 
-  // If the string is not nul-terminated, we have to make a copy.
-
-  // FIXME: This is doing a one past end read, and should be removed! For 
memory
-  // we don't manage, the API string can become unterminated at any time 
outside
-  // our control.
-
-  if (String.data()[String.size()] != 0)
-    return createDup(String);
-
-  CXString Result;
-  Result.data = String.data();
-  Result.private_flags = (unsigned) CXS_Unmanaged;
-  return Result;
+  return createDup(String);
 }
 
 CXString createDup(StringRef String) {

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to