r337474 - [analyzer] Fix memory sanitizer error in MallocChecker.

Reka Kovacs via cfe-commits cfe-commits at lists.llvm.org
Thu Jul 19 10:43:10 PDT 2018


Author: rkovacs
Date: Thu Jul 19 10:43:09 2018
New Revision: 337474

URL: http://llvm.org/viewvc/llvm-project?rev=337474&view=rev
Log:
[analyzer] Fix memory sanitizer error in MallocChecker.

StringRef's data() returns a string that may be non-null-terminated.
Switch to using StringRefs from const char pointers in visitor notes
to avoid problems.

Modified:
    cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp

Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp?rev=337474&r1=337473&r2=337474&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp Thu Jul 19 10:43:09 2018
@@ -2899,7 +2899,7 @@ std::shared_ptr<PathDiagnosticPiece> Mal
   // (__attribute__((cleanup))).
 
   // Find out if this is an interesting point and what is the kind.
-  const char *Msg = nullptr;
+  StringRef Msg;
   StackHintGeneratorForSymbol *StackHint = nullptr;
   SmallString<256> Buf;
   llvm::raw_svector_ostream OS(Buf);
@@ -2933,7 +2933,7 @@ std::shared_ptr<PathDiagnosticPiece> Mal
             }
             OS << "'";
           }
-          Msg = OS.str().data();
+          Msg = OS.str();
           break;
         }
         case AF_None:
@@ -3004,7 +3004,7 @@ std::shared_ptr<PathDiagnosticPiece> Mal
     }
   }
 
-  if (!Msg)
+  if (Msg.empty())
     return nullptr;
   assert(StackHint);
 




More information about the cfe-commits mailing list