Lines Matching refs:C

49   void checkPreStmt(const CallExpr *CE, CheckerContext &C) const;
51 void CheckOpen(CheckerContext &C, const CallExpr *CE) const;
52 void CheckOpenAt(CheckerContext &C, const CallExpr *CE) const;
53 void CheckPthreadOnce(CheckerContext &C, const CallExpr *CE) const;
55 void CheckOpenVariant(CheckerContext &C,
58 void ReportOpenBug(CheckerContext &C,
67 void checkPreStmt(const CallExpr *CE, CheckerContext &C) const;
74 void CheckCallocZero(CheckerContext &C, const CallExpr *CE) const;
75 void CheckMallocZero(CheckerContext &C, const CallExpr *CE) const;
76 void CheckReallocZero(CheckerContext &C, const CallExpr *CE) const;
77 void CheckReallocfZero(CheckerContext &C, const CallExpr *CE) const;
78 void CheckAllocaZero(CheckerContext &C, const CallExpr *CE) const;
79 void CheckAllocaWithAlignZero(CheckerContext &C, const CallExpr *CE) const;
80 void CheckVallocZero(CheckerContext &C, const CallExpr *CE) const;
82 bool ReportZeroByteAllocation(CheckerContext &C,
86 void BasicAllocationCheck(CheckerContext &C,
100 CheckerContext &C) const { in checkPreStmt()
101 const FunctionDecl *FD = C.getCalleeDecl(CE); in checkPreStmt()
111 StringRef FName = C.getCalleeName(FD); in checkPreStmt()
116 CheckOpen(C, CE); in checkPreStmt()
119 CheckOpenAt(C, CE); in checkPreStmt()
122 CheckPthreadOnce(C, CE); in checkPreStmt()
124 void UnixAPIMisuseChecker::ReportOpenBug(CheckerContext &C, in ReportOpenBug() argument
128 ExplodedNode *N = C.generateErrorNode(State); in ReportOpenBug()
134 C.emitReport(std::move(Report)); in ReportOpenBug()
137 void UnixAPIMisuseChecker::CheckOpen(CheckerContext &C, in CheckOpen() argument
139 CheckOpenVariant(C, CE, OpenVariant::Open); in CheckOpen()
142 void UnixAPIMisuseChecker::CheckOpenAt(CheckerContext &C, in CheckOpenAt() argument
144 CheckOpenVariant(C, CE, OpenVariant::OpenAt); in CheckOpenAt()
147 void UnixAPIMisuseChecker::CheckOpenVariant(CheckerContext &C, in CheckOpenVariant() argument
175 ProgramStateRef state = C.getState(); in CheckOpenVariant()
190 ReportOpenBug(C, state, in CheckOpenVariant()
201 ReportOpenBug(C, state, in CheckOpenVariant()
210 if (C.getASTContext().getTargetInfo().getTriple().getVendor() in CheckOpenVariant()
224 const SVal V = C.getSVal(oflagsEx); in CheckOpenVariant()
231 NonLoc ocreateFlag = C.getSValBuilder() in CheckOpenVariant()
234 SVal maskedFlagsUC = C.getSValBuilder().evalBinOpNN(state, BO_And, in CheckOpenVariant()
257 ReportOpenBug(C, trueState, in CheckOpenVariant()
267 void UnixAPIMisuseChecker::CheckPthreadOnce(CheckerContext &C, in CheckPthreadOnce() argument
278 ProgramStateRef state = C.getState(); in CheckPthreadOnce()
279 const MemRegion *R = C.getSVal(CE->getArg(0)).getAsRegion(); in CheckPthreadOnce()
283 ExplodedNode *N = C.generateErrorNode(state); in CheckPthreadOnce()
302 C.emitReport(std::move(report)); in CheckPthreadOnce()
329 CheckerContext &C, in ReportZeroByteAllocation() argument
333 ExplodedNode *N = C.generateErrorNode(falseState); in ReportZeroByteAllocation()
345 C.emitReport(std::move(report)); in ReportZeroByteAllocation()
352 void UnixAPIPortabilityChecker::BasicAllocationCheck(CheckerContext &C, in BasicAllocationCheck() argument
362 ProgramStateRef state = C.getState(); in BasicAllocationCheck()
365 SVal argVal = C.getSVal(arg); in BasicAllocationCheck()
372 (void) ReportZeroByteAllocation(C, falseState, arg, fn); in BasicAllocationCheck()
378 C.addTransition(trueState); in BasicAllocationCheck()
381 void UnixAPIPortabilityChecker::CheckCallocZero(CheckerContext &C, in CheckCallocZero() argument
387 ProgramStateRef state = C.getState(); in CheckCallocZero()
393 SVal argVal = C.getSVal(arg); in CheckCallocZero()
402 if (ReportZeroByteAllocation(C, falseState, arg, "calloc")) in CheckCallocZero()
414 C.addTransition(trueState); in CheckCallocZero()
417 void UnixAPIPortabilityChecker::CheckMallocZero(CheckerContext &C, in CheckMallocZero() argument
419 BasicAllocationCheck(C, CE, 1, 0, "malloc"); in CheckMallocZero()
422 void UnixAPIPortabilityChecker::CheckReallocZero(CheckerContext &C, in CheckReallocZero() argument
424 BasicAllocationCheck(C, CE, 2, 1, "realloc"); in CheckReallocZero()
427 void UnixAPIPortabilityChecker::CheckReallocfZero(CheckerContext &C, in CheckReallocfZero() argument
429 BasicAllocationCheck(C, CE, 2, 1, "reallocf"); in CheckReallocfZero()
432 void UnixAPIPortabilityChecker::CheckAllocaZero(CheckerContext &C, in CheckAllocaZero() argument
434 BasicAllocationCheck(C, CE, 1, 0, "alloca"); in CheckAllocaZero()
438 CheckerContext &C, in CheckAllocaWithAlignZero() argument
440 BasicAllocationCheck(C, CE, 2, 0, "__builtin_alloca_with_align"); in CheckAllocaWithAlignZero()
443 void UnixAPIPortabilityChecker::CheckVallocZero(CheckerContext &C, in CheckVallocZero() argument
445 BasicAllocationCheck(C, CE, 1, 0, "valloc"); in CheckVallocZero()
449 CheckerContext &C) const { in checkPreStmt()
450 const FunctionDecl *FD = C.getCalleeDecl(CE); in checkPreStmt()
460 StringRef FName = C.getCalleeName(FD); in checkPreStmt()
465 CheckCallocZero(C, CE); in checkPreStmt()
468 CheckMallocZero(C, CE); in checkPreStmt()
471 CheckReallocZero(C, CE); in checkPreStmt()
474 CheckReallocfZero(C, CE); in checkPreStmt()
477 CheckAllocaZero(C, CE); in checkPreStmt()
480 CheckAllocaWithAlignZero(C, CE); in checkPreStmt()
483 CheckVallocZero(C, CE); in checkPreStmt()