]> granicus.if.org Git - llvm/commitdiff
[llvm-rc] Fix DIALOG(EX) parsing ability (parser, pt 5/8).
authorMarek Sokolowski <mnbvmar@gmail.com>
Tue, 29 Aug 2017 20:03:18 +0000 (20:03 +0000)
committerMarek Sokolowski <mnbvmar@gmail.com>
Tue, 29 Aug 2017 20:03:18 +0000 (20:03 +0000)
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

tools/llvm-rc/ResourceScriptParser.cpp

index 499d0af83ad572ae232b49351772760039036b21..41b11911b068f0ce3a64efc74d4f0779e1fbd89a 100644 (file)
@@ -329,7 +329,7 @@ Expected<Control> 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);