[llvm-branch-commits] [clang] 3548823 - Revert "[libclang] Always Dup in createRef(StringRef) (#125020)"

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Thu Feb 13 07:39:29 PST 2025


Author: Vitaly Buka
Date: 2025-02-13T07:39:26-08:00
New Revision: 3548823b7c0ed8f985050d27d98c3f1145f0bea3

URL: https://github.com/llvm/llvm-project/commit/3548823b7c0ed8f985050d27d98c3f1145f0bea3
DIFF: https://github.com/llvm/llvm-project/commit/3548823b7c0ed8f985050d27d98c3f1145f0bea3.diff

LOG: Revert "[libclang] Always Dup in createRef(StringRef) (#125020)"

This reverts commit e76739eeb952940b2979c70ba44a28fecf592695.

Added: 
    

Modified: 
    clang/docs/ReleaseNotes.rst
    clang/tools/libclang/CXString.cpp

Removed: 
    


################################################################################
diff  --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index e41ad384b84f7..03bddbe3e983a 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -257,9 +257,6 @@ 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 aaa8f8eeb67a1..5e427957a1092 100644
--- a/clang/tools/libclang/CXString.cpp
+++ b/clang/tools/libclang/CXString.cpp
@@ -87,7 +87,19 @@ CXString createRef(StringRef String) {
   if (String.empty())
     return createEmpty();
 
-  return createDup(String);
+  // 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;
 }
 
 CXString createDup(StringRef String) {


        


More information about the llvm-branch-commits mailing list