[llvm] fc99f18 - [Symbolizer] Fix use-after-free

Benjamin Kramer via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 22 01:29:28 PDT 2022


Author: Benjamin Kramer
Date: 2022-07-22T10:29:04+02:00
New Revision: fc99f18a20f47805f7ac127cc2147f316c6459a5

URL: https://github.com/llvm/llvm-project/commit/fc99f18a20f47805f7ac127cc2147f316c6459a5
DIFF: https://github.com/llvm/llvm-project/commit/fc99f18a20f47805f7ac127cc2147f316c6459a5.diff

LOG: [Symbolizer] Fix use-after-free

MarkupFilter keeps a reference to the last filtered StringRef. Just keep
it alive a bit longer. Found by asan.

Added: 
    

Modified: 
    llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp
index fb223d1ee8a90..7ec70e42f1c1f 100644
--- a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp
+++ b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp
@@ -368,7 +368,8 @@ static SmallVector<uint8_t> parseBuildIDArg(const opt::InputArgList &Args,
 // Symbolize markup from stdin and write the result to stdout.
 static void filterMarkup(const opt::InputArgList &Args) {
   MarkupFilter Filter(outs(), parseColorArg(Args));
-  for (std::string InputString; std::getline(std::cin, InputString);) {
+  std::string InputString;
+  while (std::getline(std::cin, InputString)) {
     InputString += '\n';
     Filter.filter(InputString);
   }


        


More information about the llvm-commits mailing list