r201628 - CIndex: initialise TU

Saleem Abdulrasool compnerd at compnerd.org
Tue Feb 18 18:56:56 PST 2014

Author: compnerd
Date: Tue Feb 18 20:56:55 2014
New Revision: 201628

URL: http://llvm.org/viewvc/llvm-project?rev=201628&view=rev
CIndex: initialise TU

TU is not guaranteed to be initialised in all cases.  In particular if CIdx or
ast_filename is NULL (or if &TU is NULL), then clang_createTranslationUnit2 will
not initialise the out parameter out_TU.  This is followed by an assertion check
which may perform a branch based on unitialised memory.

Caught by scan-build.


Modified: cfe/trunk/tools/libclang/CIndex.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndex.cpp?rev=201628&r1=201627&r2=201628&view=diff
--- cfe/trunk/tools/libclang/CIndex.cpp (original)
+++ cfe/trunk/tools/libclang/CIndex.cpp Tue Feb 18 20:56:55 2014
@@ -2612,7 +2612,7 @@ void clang_toggleCrashRecovery(unsigned
 CXTranslationUnit clang_createTranslationUnit(CXIndex CIdx,
                                               const char *ast_filename) {
-  CXTranslationUnit TU;
+  CXTranslationUnit TU = NULL;
   enum CXErrorCode Result =
       clang_createTranslationUnit2(CIdx, ast_filename, &TU);

More information about the cfe-commits mailing list