File tree 2 files changed +13
-4
lines changed
2 files changed +13
-4
lines changed Original file line number Diff line number Diff line change @@ -257,9 +257,6 @@ clang-format
257
257
libclang
258
258
--------
259
259
260
- - Fixed a buffer overflow in ``CXString `` implementation. The fix may result in
261
- increased memory allocation.
262
-
263
260
Code Completion
264
261
---------------
265
262
Original file line number Diff line number Diff line change @@ -87,7 +87,19 @@ CXString createRef(StringRef String) {
87
87
if (String.empty ())
88
88
return createEmpty ();
89
89
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;
91
103
}
92
104
93
105
CXString createDup (StringRef String) {
You can’t perform that action at this time.
0 commit comments