File tree Expand file tree Collapse file tree 2 files changed +13
-4
lines changed Expand file tree Collapse file tree 2 files changed +13
-4
lines changed Original file line number Diff line number Diff line change @@ -257,9 +257,6 @@ clang-format
257257libclang
258258--------
259259
260- - Fixed a buffer overflow in ``CXString `` implementation. The fix may result in
261- increased memory allocation.
262-
263260Code Completion
264261---------------
265262
Original file line number Diff line number Diff line change @@ -87,7 +87,19 @@ CXString createRef(StringRef String) {
8787 if (String.empty ())
8888 return createEmpty ();
8989
90- return createDup (String);
90+ // If the string is not nul-terminated, we have to make a copy.
91+
92+ // FIXME: This is doing a one past end read, and should be removed! For memory
93+ // we don't manage, the API string can become unterminated at any time outside
94+ // our control.
95+
96+ if (String.data ()[String.size ()] != 0 )
97+ return createDup (String);
98+
99+ CXString Result;
100+ Result.data = String.data ();
101+ Result.private_flags = (unsigned ) CXS_Unmanaged;
102+ return Result;
91103}
92104
93105CXString createDup (StringRef String) {
You can’t perform that action at this time.
0 commit comments