diff options
author | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-11-03 12:13:38 +0000 |
---|---|---|
committer | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-11-03 12:13:38 +0000 |
commit | 5206f0b913d1a11744c9436c83b24f8daa21152c (patch) | |
tree | 18e9b48570d6cf34a39e77222b1817de4d0e9586 /include/clang | |
parent | 8112c61789ed077892f4abae55065ab3ce2ae977 (diff) |
Pull VLA size checker into its own files.
Split it to two checkers, one for undefined size,
the other for zero size, so that we don't need to query the size
when emitting the bug report.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85895 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang')
3 files changed, 65 insertions, 0 deletions
diff --git a/include/clang/Analysis/PathSensitive/Checker.h b/include/clang/Analysis/PathSensitive/Checker.h index ac856d370f..0134599511 100644 --- a/include/clang/Analysis/PathSensitive/Checker.h +++ b/include/clang/Analysis/PathSensitive/Checker.h @@ -126,6 +126,13 @@ public: GRExprEngine &Eng) { return Pred; } + + virtual ExplodedNode *CheckType(QualType T, ExplodedNode *Pred, + const GRState *state, Stmt *S, + GRExprEngine &Eng) { + return Pred; + } + }; } // end clang namespace diff --git a/include/clang/Analysis/PathSensitive/Checkers/UndefSizedVLAChecker.h b/include/clang/Analysis/PathSensitive/Checkers/UndefSizedVLAChecker.h new file mode 100644 index 0000000000..9d4507cb0c --- /dev/null +++ b/include/clang/Analysis/PathSensitive/Checkers/UndefSizedVLAChecker.h @@ -0,0 +1,29 @@ +//=== UndefSizedVLAChecker.h - Undefined dereference checker ----*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This defines UndefSizedVLAChecker, a builtin check in GRExprEngine that +// performs checks for declaration of VLA of undefined size. +// +//===----------------------------------------------------------------------===// + +#include "clang/Analysis/PathSensitive/Checker.h" + +namespace clang { + +class UndefSizedVLAChecker : public Checker { + BugType *BT; + +public: + UndefSizedVLAChecker() : BT(0) {} + static void *getTag(); + ExplodedNode *CheckType(QualType T, ExplodedNode *Pred, + const GRState *state, Stmt *S, GRExprEngine &Eng); +}; + +} diff --git a/include/clang/Analysis/PathSensitive/Checkers/ZeroSizedVLAChecker.h b/include/clang/Analysis/PathSensitive/Checkers/ZeroSizedVLAChecker.h new file mode 100644 index 0000000000..4d3be31acf --- /dev/null +++ b/include/clang/Analysis/PathSensitive/Checkers/ZeroSizedVLAChecker.h @@ -0,0 +1,29 @@ +//=== ZeroSizedVLAChecker.cpp - Undefined dereference checker ---*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This defines ZeorSizedVLAChecker, a builtin check in GRExprEngine that +// performs checks for declaration of VLA of zero size. +// +//===----------------------------------------------------------------------===// + +#include "clang/Analysis/PathSensitive/Checker.h" + +namespace clang { + +class ZeroSizedVLAChecker : public Checker { + BugType *BT; + +public: + ZeroSizedVLAChecker() : BT(0) {} + static void *getTag(); + ExplodedNode *CheckType(QualType T, ExplodedNode *Pred, + const GRState *state, Stmt *S, GRExprEngine &Eng); +}; + +} |