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