From: Marek Sokolowski Date: Tue, 29 Aug 2017 20:03:18 +0000 (+0000) Subject: [llvm-rc] Fix DIALOG(EX) parsing ability (parser, pt 5/8). X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=505883f042c0fbf9340dc1373c75bcde464d1f39;p=llvm [llvm-rc] Fix DIALOG(EX) parsing ability (parser, pt 5/8). This fixes a use-after-free bug that was noticed by a sanitizer buildbot (http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/7502). Differential Revision: https://reviews.llvm.org/D37271 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312028 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/llvm-rc/ResourceScriptParser.cpp b/tools/llvm-rc/ResourceScriptParser.cpp index 499d0af83ad..41b11911b06 100644 --- a/tools/llvm-rc/ResourceScriptParser.cpp +++ b/tools/llvm-rc/ResourceScriptParser.cpp @@ -329,7 +329,7 @@ Expected RCParser::parseControl() { // [class] id, x, y, width, height [, style] [, exstyle] [, helpID] // Note that control ids must be integers. ASSIGN_OR_RETURN(ClassResult, readIdentifier()); - StringRef ClassUpper = ClassResult->upper(); + std::string ClassUpper = ClassResult->upper(); if (Control::SupportedCtls.find(ClassUpper) == Control::SupportedCtls.end()) return getExpectedError("control type, END or '}'", true);