Static Value-Flow Analysis
|
#include <LeakChecker.h>
Protected Member Functions | |
virtual void | reportBug (ProgSlice *slice) override |
Report leaks. | |
void | testsValidation (const ProgSlice *slice) |
Validate test cases for regression test purpose. | |
void | validateSuccessTests (const SVFGNode *source, const SVFFunction *fun) |
void | validateExpectedFailureTests (const SVFGNode *source, const SVFFunction *fun) |
void | addSrcToCSID (const SVFGNode *src, const CallICFGNode *cs) |
Record a source to its callsite. | |
const CallICFGNode * | getSrcCSID (const SVFGNode *src) |
Protected Member Functions inherited from SVF::SrcSnkDDA | |
void | FWProcessCurNode (const DPIm &item) override |
Forward traverse. | |
void | BWProcessCurNode (const DPIm &item) override |
Backward traverse. | |
void | FWProcessOutgoingEdge (const DPIm &item, SVFGEdge *edge) override |
Propagate information forward by matching context. | |
void | BWProcessIncomingEdge (const DPIm &item, SVFGEdge *edge) override |
Propagate information backward without matching context, as forward analysis already did it. | |
bool | forwardVisited (const SVFGNode *node, const DPIm &item) |
Whether has been visited or not, in order to avoid recursion on SVFG. | |
void | addForwardVisited (const SVFGNode *node, const DPIm &item) |
bool | backwardVisited (const SVFGNode *node) |
void | addBackwardVisited (const SVFGNode *node) |
void | clearVisitedMap () |
virtual bool | isAllPathReachable () |
Whether it is all path reachable from a source. | |
virtual bool | isSomePathReachable () |
Whether it is some path reachable from a source. | |
void | dumpSlices () |
Dump SVFG with annotated slice information. | |
void | annotateSlice (ProgSlice *slice) |
void | printZ3Stat () |
Protected Member Functions inherited from SVF::GraphReachSolver< GraphType, DPIm > | |
GraphReachSolver () | |
Constructor. | |
virtual | ~GraphReachSolver () |
Destructor. | |
const GraphType | graph () const |
Get/Set graph methods. | |
void | setGraph (GraphType g) |
GNODE * | getNode (NodeID id) const |
virtual NodeID | getNodeIDFromItem (const DPIm &item) const |
virtual void | forwardTraverse (DPIm &it) |
CFL forward traverse solve. | |
virtual void | backwardTraverse (DPIm &it) |
CFL forward traverse solve. | |
virtual void | FWProcessCurNode (const DPIm &) |
Process the DP item. | |
virtual void | BWProcessCurNode (const DPIm &) |
virtual void | FWProcessOutgoingEdge (const DPIm &item, GEDGE *edge) |
Propagation for the solving, to be implemented in the child class. | |
virtual void | BWProcessIncomingEdge (const DPIm &item, GEDGE *edge) |
DPIm | popFromWorklist () |
Worklist operations. | |
bool | pushIntoWorklist (DPIm &item) |
bool | isWorklistEmpty () |
bool | isInWorklist (DPIm &item) |
Private Attributes | |
SVFGNodeToCSIDMap | srcToCSIDMap |
Additional Inherited Members | |
Protected Attributes inherited from SVF::SrcSnkDDA | |
SaberSVFGBuilder | memSSA |
SVFG * | svfg |
PTACallGraph * | callgraph |
SVFBugReport | report |
Static Memory Leak Detector
Definition at line 42 of file LeakChecker.h.
Definition at line 47 of file LeakChecker.h.
Definition at line 49 of file LeakChecker.h.
Definition at line 46 of file LeakChecker.h.
Definition at line 48 of file LeakChecker.h.
Enumerator | |
---|---|
NEVER_FREE_LEAK | |
CONTEXT_LEAK | |
PATH_LEAK | |
GLOBAL_LEAK |
Definition at line 50 of file LeakChecker.h.
|
inline |
|
inlinevirtual |
|
inlineprotected |
Record a source to its callsite.
Definition at line 105 of file LeakChecker.h.
|
inlineprotected |
Definition at line 109 of file LeakChecker.h.
|
overridevirtual |
Initialize sinks
we only choose pointer parameters among all the actual parameters
Implements SVF::SrcSnkDDA.
Definition at line 105 of file LeakChecker.cpp.
|
overridevirtual |
Initialize sources and sinks.
Initialize sources and sinks
Initialize sources
if this callsite return reside in a dead function then we do not care about its leaks for example instruction int* p = malloc(size)
is in a dead function, then program won't allocate this memory for example a customized malloc int p = malloc()
returns an integer value, then program treat it as a system malloc
Implements SVF::SrcSnkDDA.
Definition at line 40 of file LeakChecker.cpp.
|
inlineoverridevirtual |
Whether the function is a heap deallocator (free/release memory)
Reimplemented from SVF::SrcSnkDDA.
Reimplemented in SVF::FileChecker.
Definition at line 86 of file LeakChecker.h.
|
inlineoverridevirtual |
Whether the function is a heap allocator/reallocator (allocate memory)
Reimplemented from SVF::SrcSnkDDA.
Reimplemented in SVF::FileChecker.
Definition at line 81 of file LeakChecker.h.
|
overrideprotectedvirtual |
Report leaks.
Implements SVF::SrcSnkDDA.
Reimplemented in SVF::FileChecker, and SVF::DoubleFreeChecker.
Definition at line 148 of file LeakChecker.cpp.
We start from here.
start analysis
Reimplemented in SVF::FileChecker, and SVF::DoubleFreeChecker.
Definition at line 68 of file LeakChecker.h.
Validate test cases for regression test purpose.
Validate test cases for regression test purpose
Definition at line 178 of file LeakChecker.cpp.
|
protected |
Definition at line 246 of file LeakChecker.cpp.
|
protected |
Definition at line 191 of file LeakChecker.cpp.
|
private |
Definition at line 117 of file LeakChecker.h.