summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/MallocChecker.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Split libAnalysis into two libraries: libAnalysis and libChecker.Ted Kremenek2010-01-251-336/+0
| | | | | | | | | | | | | | | | | | | | | | | | | (1) libAnalysis is a generic analysis library that can be used by Sema. It defines the CFG, basic dataflow analysis primitives, and inexpensive flow-sensitive analyses (e.g. LiveVariables). (2) libChecker contains the guts of the static analyzer, incuding the path-sensitive analysis engine and domain-specific checks. Now any clients that want to use the frontend to build their own tools don't need to link in the entire static analyzer. This change exposes various obvious cleanups that can be made to the layout of files and headers in libChecker. More changes pending. :) This change also exposed a layering violation between AnalysisContext and MemRegion. BlockInvocationContext shouldn't explicitly know about BlockDataRegions. For now I've removed the BlockDataRegion* from BlockInvocationContext (removing context-sensitivity; although this wasn't used yet). We need to have a better way to extend BlockInvocationContext (and any LocationContext) to add context-sensitivty. llvm-svn: 94406
* Add support for computing size in elements for symbolic regions obtained fromZhongxing Xu2010-01-181-4/+11
| | | | | | malloc(). llvm-svn: 93722
* If the symbol has not been tracked, do not free it. This is possible when freeZhongxing Xu2010-01-181-1/+6
| | | | | | is called on a pointer that does not get its value directly from malloc. llvm-svn: 93706
* Let constraint manager inform checkers that some assumption logic has happend.Zhongxing Xu2009-12-311-4/+28
| | | | | | | | | Add new states for symbolic regions tracked by malloc checker. This enables us to do malloc checking more accurately. See test case. Based on Lei Zhang's patch and discussion. llvm-svn: 92342
* Add initial support for realloc() in MallocChecker.Zhongxing Xu2009-12-121-10/+82
| | | | llvm-svn: 91216
* Completely evaluate malloc/free in MallocChecker.cpp.Zhongxing Xu2009-12-111-8/+20
| | | | llvm-svn: 91100
* Use 'class' instead of 'struct'.Zhongxing Xu2009-12-111-1/+2
| | | | llvm-svn: 91085
* lib/Analysis: Remove VISIBILITY_HIDDEN from definitions in anonymous namespaceKovarththanan Rajaratnam2009-11-281-3/+3
| | | | llvm-svn: 90028
* Clean up the Checker API a little more, resolving some hidden bugsTed Kremenek2009-11-231-9/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | along the way. Important changes: 1) To generate a sink node, use GenerateSink(); GenerateNode() is for generating regular transitions. This makes the API clearer and also allows us to use the 'bool' option to GenerateNode() for a different purpose. 2) GenerateNode() now automatically adds the generated node to the destination ExplodedNodeSet (autotransition) unless the client specifies otherwise with a bool flag. Several checkers did not call 'addTransition()' after calling 'GenerateNode()', causing the simulation path to be prematurely culled when a non-fail stop bug was encountered. 3) Add variants of GenerateNode()/GenerateSink() that take neither a Stmt* or a GRState*; most callers of GenerateNode() just pass in the same Stmt* as provided when the CheckerContext object is created; we can just use that the majority of the time. This cleanup also allows us to potentially coelesce the APIs for evaluating branches and end-of-paths (which currently directly use builders). 4) addTransition() no longer needs to be called except for a few cases. We now have a variant of addTransition() that takes a GRState*; this allows one to propagate the updated state without caring about generating a new node explicitly. This nicely cleaned up a bunch of cases that called autoTransition() with a bunch of conditional logic surround the call (that common logic has now been swallowed up by addTransition() itself). llvm-svn: 89707
* Save and restore the HasGen flag in MallocChecker.Zhongxing Xu2009-11-221-0/+1
| | | | llvm-svn: 89590
* Add PreVisitReturn to Malloc checker. Now we can recognize returned memoryZhongxing Xu2009-11-171-0/+26
| | | | | | block. llvm-svn: 89071
* Add EvalEndPath interface to Checker. Now we can check memory leaked at theZhongxing Xu2009-11-171-20/+52
| | | | | | end of the path. Need to unify interfaces. llvm-svn: 89063
* Change *BugReport constructors to take StringRefs.Benjamin Kramer2009-11-141-2/+2
| | | | | | | | - Eliminates many calls to std::string.c_str() - Fixes an invalid read in ReturnStackAddressChecker due to an unsafe call to StringRef.data() which doesn't guarantee null-termination. llvm-svn: 88779
* Malloc checker basically works now.Zhongxing Xu2009-11-131-2/+24
| | | | llvm-svn: 87094
* Hook up Malloc checker.Zhongxing Xu2009-11-131-0/+12
| | | | llvm-svn: 87093
* Fix MSVC build.Benjamin Kramer2009-11-121-1/+1
| | | | llvm-svn: 86983
* Add boilerplate logic for a malloc/free checker.Zhongxing Xu2009-11-121-0/+126
llvm-svn: 86978
OpenPOWER on IntegriCloud