|
Static Value-Flow Analysis
|
#include <FileChecker.h>
Public Member Functions | |
| FileChecker () | |
| Constructor. | |
| virtual | ~FileChecker () |
| Destructor. | |
| virtual bool | runOnModule (SVFIR *pag) |
| We start from here. | |
| bool | isSourceLikeFun (const FunObjVar *fun) |
| Whether the function is a heap allocator/reallocator (allocate memory). | |
| bool | isSinkLikeFun (const FunObjVar *fun) |
| Whether the function is a heap deallocator (free/release memory). | |
| void | reportBug (ProgSlice *slice) |
| Report file/close bugs. | |
| Public Member Functions inherited from SVF::LeakChecker | |
| LeakChecker () | |
| Constructor. | |
| virtual | ~LeakChecker () |
| Destructor. | |
| virtual void | initSrcs () override |
| Initialize sources and sinks. | |
| virtual void | initSnks () override |
| Public Member Functions inherited from SVF::SrcSnkDDA | |
| SrcSnkDDA () | |
| Bug Reporter. | |
| ~SrcSnkDDA () override | |
| Destructor. | |
| virtual void | analyze () |
| Start analysis here. | |
| virtual void | initialize () |
| Initialize analysis. | |
| virtual void | finalize () |
| Finalize analysis. | |
| SVFIR * | getPAG () const |
| Get SVFIR. | |
| const SVFG * | getSVFG () const |
| Get SVFG. | |
| CallGraph * | getCallgraph () const |
| Get Callgraph. | |
| bool | isGlobalSVFGNode (const SVFGNode *node) const |
| Whether this svfg node may access global variable. | |
| virtual void | setCurSlice (const SVFGNode *src) |
| Slice operations. | |
| ProgSlice * | getCurSlice () const |
| void | addSinkToCurSlice (const SVFGNode *node) |
| bool | isInCurForwardSlice (const SVFGNode *node) |
| bool | isInCurBackwardSlice (const SVFGNode *node) |
| void | addToCurForwardSlice (const SVFGNode *node) |
| void | addToCurBackwardSlice (const SVFGNode *node) |
| bool | isInAWrapper (const SVFGNode *src, CallSiteSet &csIdSet) |
| Identify allocation wrappers. | |
| const SVFGNodeSet & | getSources () const |
| Get sources/sinks. | |
| SVFGNodeSetIter | sourcesBegin () const |
| SVFGNodeSetIter | sourcesEnd () const |
| void | addToSources (const SVFGNode *node) |
| const SVFGNodeSet & | getSinks () const |
| SVFGNodeSetIter | sinksBegin () const |
| SVFGNodeSetIter | sinksEnd () const |
| void | addToSinks (const SVFGNode *node) |
| SaberCondAllocator * | getSaberCondAllocator () const |
| Get saber condition allocator. | |
| const SVFBugReport & | getBugReport () const |
| bool | isSource (const SVFGNode *node) const |
| bool | isSink (const SVFGNode *node) const |
Additional Inherited Members | |
| Public Types inherited from SVF::LeakChecker | |
| enum | LEAK_TYPE { NEVER_FREE_LEAK , CONTEXT_LEAK , PATH_LEAK , GLOBAL_LEAK } |
| typedef Map< const SVFGNode *, const CallICFGNode * > | SVFGNodeToCSIDMap |
| typedef FIFOWorkList< const CallICFGNode * > | CSWorkList |
| typedef ProgSlice::VFWorkList | WorkList |
| typedef NodeBS | SVFGNodeBS |
| Public Types inherited from SVF::SrcSnkDDA | |
| typedef ProgSlice::SVFGNodeSet | SVFGNodeSet |
| typedef Map< const SVFGNode *, ProgSlice * > | SVFGNodeToSliceMap |
| typedef SVFGNodeSet::const_iterator | SVFGNodeSetIter |
| typedef CxtDPItem | DPIm |
| typedef Set< DPIm > | DPImSet |
| dpitem set | |
| typedef Map< const SVFGNode *, DPImSet > | SVFGNodeToDPItemsMap |
| map a SVFGNode to its visited dpitems | |
| typedef Set< const CallICFGNode * > | CallSiteSet |
| typedef NodeBS | SVFGNodeBS |
| typedef ProgSlice::VFWorkList | WorkList |
| Public Types inherited from SVF::GraphReachSolver< SVFG *, CxtDPItem > | |
| typedef SVF::GenericGraphTraits< SVFG * > | GTraits |
| Define the GTraits and node iterator. | |
| typedef GTraits::NodeType | GNODE |
| typedef GTraits::EdgeType | GEDGE |
| typedef GTraits::nodes_iterator | node_iterator |
| typedef GTraits::ChildIteratorType | child_iterator |
| typedef SVF::GenericGraphTraits< SVF::Inverse< GNODE * > > | InvGTraits |
| Define inverse GTraits and note iterator. | |
| typedef InvGTraits::ChildIteratorType | inv_child_iterator |
| typedef FIFOWorkList< CxtDPItem > | WorkList |
| Define worklist. | |
| Protected Member Functions inherited from SVF::LeakChecker | |
| void | testsValidation (const ProgSlice *slice) |
| Validate test cases for regression test purpose. | |
| void | validateSuccessTests (const SVFGNode *source, const FunObjVar *fun) |
| void | validateExpectedFailureTests (const SVFGNode *source, const FunObjVar *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< SVFG *, CxtDPItem > | |
| GraphReachSolver () | |
| Constructor. | |
| virtual | ~GraphReachSolver () |
| Destructor. | |
| const SVFG * | graph () const |
| Get/Set graph methods. | |
| void | setGraph (SVFG *g) |
| GNODE * | getNode (NodeID id) const |
| virtual NodeID | getNodeIDFromItem (const CxtDPItem &item) const |
| virtual void | forwardTraverse (CxtDPItem &it) |
| CFL forward traverse solve. | |
| virtual void | backwardTraverse (CxtDPItem &it) |
| CFL forward traverse solve. | |
| virtual void | FWProcessOutgoingEdge (const CxtDPItem &item, GEDGE *edge) |
| Propagation for the solving, to be implemented in the child class. | |
| virtual void | BWProcessIncomingEdge (const CxtDPItem &item, GEDGE *edge) |
| CxtDPItem | popFromWorklist () |
| Worklist operations. | |
| bool | pushIntoWorklist (CxtDPItem &item) |
| bool | isWorklistEmpty () |
| bool | isInWorklist (CxtDPItem &item) |
| Protected Attributes inherited from SVF::SrcSnkDDA | |
| SaberSVFGBuilder | memSSA |
| SVFG * | svfg |
| CallGraph * | callgraph |
| SVFBugReport | report |
File open/close checker to check consistency of file operations
Definition at line 42 of file FileChecker.h.
|
inline |
|
inlinevirtual |
|
inlinevirtual |
Whether the function is a heap deallocator (free/release memory).
Reimplemented from SVF::LeakChecker.
Definition at line 70 of file FileChecker.h.
|
inlinevirtual |
Whether the function is a heap allocator/reallocator (allocate memory).
Reimplemented from SVF::LeakChecker.
Definition at line 65 of file FileChecker.h.
|
virtual |
Report file/close bugs.
Reimplemented from SVF::LeakChecker.
Definition at line 36 of file FileChecker.cpp.
|
inlinevirtual |
We start from here.
start analysis
Reimplemented from SVF::LeakChecker.
Definition at line 58 of file FileChecker.h.