diff options
author | Denis Zobnin <d.zobnin.bugzilla@gmail.com> | 2016-02-02 17:33:09 +0000 |
---|---|---|
committer | Denis Zobnin <d.zobnin.bugzilla@gmail.com> | 2016-02-02 17:33:09 +0000 |
commit | 7d6b924df841faff6893207044cc57b02464b255 (patch) | |
tree | 629d61803770cd26ae7292810662481c69c9e3a8 /clang/lib/Sema/SemaDecl.cpp | |
parent | abf22eb5449c2231492734fcd8124de7d797c12d (diff) | |
download | bcm5719-llvm-7d6b924df841faff6893207044cc57b02464b255.tar.gz bcm5719-llvm-7d6b924df841faff6893207044cc57b02464b255.zip |
PR23057: Fix assertion `Val && "isa<> used on a null pointer"' on invalid for-range expression.
Fix the issue discovered by fuzzing (PR23057, comment 18) by handling nullptr in Sema::ActOnCXXForRangeDecl
and correct delayed typos in for-range expression before calling Sema::ActOnCXXForRangeStmt. Also fixes PR26288.
Differential Revision: http://reviews.llvm.org/D16630
llvm-svn: 259532
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 11d51a09794..5db2c374aed 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -9928,6 +9928,10 @@ void Sema::ActOnUninitializedDecl(Decl *RealDecl, } void Sema::ActOnCXXForRangeDecl(Decl *D) { + // If there is no declaration, there was an error parsing it. Ignore it. + if (!D) + return; + VarDecl *VD = dyn_cast<VarDecl>(D); if (!VD) { Diag(D->getLocation(), diag::err_for_range_decl_must_be_var); |