[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