When parsing goto labels, Names and Exprs are expanded but Constraints
is not, this may cause a out-of-bounds read later in:
// GCCAsmStmt::GCCAsmStmt
// `constraints` has only `NumExprs - NumLabels` elements
Constraints = new (C) StringLiteral*[NumExprs];
std::copy(constraints, constraints + NumExprs, Constraints);
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@362067
91177308-0d34-0410-b5e6-
96231b3b80d8
ExprResult Res =
Actions.ActOnAddrLabel(Tok.getLocation(), Tok.getLocation(), LD);
Exprs.push_back(Res.get());
+ Constraints.emplace_back();
NumLabels++;
ConsumeToken();
if (!TryConsumeToken(tok::comma))