From: Simon Pilgrim Date: Tue, 30 Apr 2019 13:09:55 +0000 (+0000) Subject: [TableGen] Fix null pointer dereferencing in token parser. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=efd0651c27d65ca5367201fa32cb51d7654c3a70;p=llvm [TableGen] Fix null pointer dereferencing in token parser. Reported in https://www.viva64.com/en/b/0629/ git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359559 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/TableGen/TGParser.cpp b/lib/TableGen/TGParser.cpp index 937de9e5c52..6a460870aa9 100644 --- a/lib/TableGen/TGParser.cpp +++ b/lib/TableGen/TGParser.cpp @@ -2189,14 +2189,15 @@ Init *TGParser::ParseValue(Record *CurRec, RecTy *ItemType, IDParseMode Mode) { // Create a !strconcat() operation, first casting each operand to // a string if necessary. if (LHS->getType() != StringRecTy::get()) { - LHS = dyn_cast( + auto CastLHS = dyn_cast( UnOpInit::get(UnOpInit::CAST, LHS, StringRecTy::get()) ->Fold(CurRec)); - if (!LHS) { - Error(PasteLoc, Twine("can't cast '") + LHS->getAsString() + - "' to string"); + if (!CastLHS) { + Error(PasteLoc, + Twine("can't cast '") + LHS->getAsString() + "' to string"); return nullptr; } + LHS = CastLHS; } TypedInit *RHS = nullptr; @@ -2223,14 +2224,15 @@ Init *TGParser::ParseValue(Record *CurRec, RecTy *ItemType, IDParseMode Mode) { } if (RHS->getType() != StringRecTy::get()) { - RHS = dyn_cast( + auto CastRHS = dyn_cast( UnOpInit::get(UnOpInit::CAST, RHS, StringRecTy::get()) ->Fold(CurRec)); - if (!RHS) { - Error(PasteLoc, Twine("can't cast '") + RHS->getAsString() + - "' to string"); + if (!CastRHS) { + Error(PasteLoc, + Twine("can't cast '") + RHS->getAsString() + "' to string"); return nullptr; } + RHS = CastRHS; } break;