Static Value-Flow Analysis
Loading...
Searching...
No Matches
SVF::FilePartialCloseBug Class Reference

#include <SVFBugReport.h>

Inheritance diagram for SVF::FilePartialCloseBug:
SVF::GenericBug

Public Member Functions

 FilePartialCloseBug (const EventStack &bugEventStack)
cJSON * getBugDescription () const
void printBugToTerminal () const
Public Member Functions inherited from SVF::GenericBug
 GenericBug (BugType bugType, const EventStack &bugEventStack)
 note: should be initialized with a bugEventStack
virtual ~GenericBug ()=default
BugType getBugType () const
 returns bug type
const std::string getLoc () const
 returns bug location as json format string
const std::string getFuncName () const
 return bug source function name
const EventStack & getEventStack () const

Static Public Member Functions

static bool classof (const GenericBug *bug)
 ClassOf.

Additional Inherited Members

Public Types inherited from SVF::GenericBug
enum  BugType {
  FULLBUFOVERFLOW , PARTIALBUFOVERFLOW , NEVERFREE , PARTIALLEAK ,
  DOUBLEFREE , FILENEVERCLOSE , FILEPARTIALCLOSE , FULLNULLPTRDEREFERENCE ,
  PARTIALNULLPTRDEREFERENCE
}
typedef std::vector< SVFBugEvent > EventStack
Static Public Attributes inherited from SVF::GenericBug
static const OrderedMap< GenericBug::BugType, std::string > BugType2Str
Protected Attributes inherited from SVF::GenericBug
BugType bugType
const EventStack bugEventStack

Detailed Description

Definition at line 238 of file SVFBugReport.h.

Constructor & Destructor Documentation

◆ FilePartialCloseBug()

SVF::FilePartialCloseBug::FilePartialCloseBug ( const EventStack & bugEventStack)
inline

Definition at line 241 of file SVFBugReport.h.

241 :
GenericBug(BugType bugType, const EventStack &bugEventStack)
note: should be initialized with a bugEventStack
const EventStack bugEventStack

Member Function Documentation

◆ classof()

bool SVF::FilePartialCloseBug::classof ( const GenericBug * bug)
inlinestatic

ClassOf.

Definition at line 248 of file SVFBugReport.h.

249 {
250 return bug->getBugType() == GenericBug::FILEPARTIALCLOSE;
251 }

◆ getBugDescription()

cJSON * FilePartialCloseBug::getBugDescription ( ) const
virtual

Implements SVF::GenericBug.

Definition at line 219 of file SVFBugReport.cpp.

220{
221 cJSON *bugDescription = cJSON_CreateObject();
222
223 cJSON *pathInfo = cJSON_CreateArray();
224
225 auto lastBranchEventIt = bugEventStack.end() - 1;
226 for(auto eventIt = bugEventStack.begin(); eventIt != lastBranchEventIt; eventIt++)
227 {
228 cJSON *newBranch = cJSON_CreateObject();
229 cJSON *branchLoc = cJSON_Parse((*eventIt).getEventLoc().c_str());
230 if(branchLoc == nullptr) branchLoc = cJSON_CreateObject();
231 cJSON *branchCondition = cJSON_CreateString((*eventIt).getEventDescription().c_str());
232
233 cJSON_AddItemToObject(newBranch, "BranchLoc", branchLoc);
234 cJSON_AddItemToObject(newBranch, "BranchCond", branchCondition);
235
236 cJSON_AddItemToArray(pathInfo, newBranch);
237 }
238 cJSON_AddItemToObject(bugDescription, "ConditionalFileClosePath", pathInfo);
239
240 return bugDescription;
241}
struct cJSON cJSON

◆ printBugToTerminal()

void FilePartialCloseBug::printBugToTerminal ( ) const
virtual

Implements SVF::GenericBug.

Definition at line 243 of file SVFBugReport.cpp.

244{
245 SVFUtil::errs() << SVFUtil::bugMsg2("\t PartialFileClose :") << " file open location at : ("
246 << GenericBug::getLoc() << ")\n";
247
248 SVFUtil::errs() << "\t\t conditional file close path: \n";
249 auto lastBranchEventIt = bugEventStack.end() - 1;
250 for(auto eventIt = bugEventStack.begin(); eventIt != lastBranchEventIt; eventIt++)
251 {
252 SVFUtil::errs() << "\t\t --> (" << (*eventIt).getEventLoc() << "|" << (*eventIt).getEventDescription() << ") \n";
253 }
254 SVFUtil::errs() << "\n";
255}
const std::string getLoc() const
returns bug location as json format string
std::ostream & errs()
Overwrite llvm::errs().
Definition SVFUtil.h:64
std::string bugMsg2(const std::string &msg)
Definition SVFUtil.cpp:108

The documentation for this class was generated from the following files: