diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-07-21 23:03:43 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-07-21 23:03:43 +0000 |
commit | e7287717cb86cf425ceb1f550a4162e49a8659d7 (patch) | |
tree | 9672f5217fe83394f5d15547f4c48e4cb40aab0f /clang/lib | |
parent | e62dda20a4e716f444cf5272318cbfaa9888df91 (diff) | |
download | bcm5719-llvm-e7287717cb86cf425ceb1f550a4162e49a8659d7.tar.gz bcm5719-llvm-e7287717cb86cf425ceb1f550a4162e49a8659d7.zip |
[Sema] Handle errors during rewriteBuiltinFunctionDecl
rewriteBuiltinFunctionDecl can encounter errors when performing
DefaultFunctionArrayLvalueConversion. These errors were not handled
which led to a null pointer dereference.
This fixes PR28651.
llvm-svn: 276352
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index ac5da811299..0abe75ab2d8 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -5051,7 +5051,11 @@ static FunctionDecl *rewriteBuiltinFunctionDecl(Sema *Sema, ASTContext &Context, for (QualType ParamType : FT->param_types()) { // Convert array arguments to pointer to simplify type lookup. - Expr *Arg = Sema->DefaultFunctionArrayLvalueConversion(ArgExprs[i++]).get(); + ExprResult ArgRes = + Sema->DefaultFunctionArrayLvalueConversion(ArgExprs[i++]); + if (ArgRes.isInvalid()) + return nullptr; + Expr *Arg = ArgRes.get(); QualType ArgType = Arg->getType(); if (!ParamType->isPointerType() || ParamType.getQualifiers().hasAddressSpace() || |