Lines Matching refs:C

48   void checkPreStmt(const CallExpr *CE, CheckerContext &C) const;
50 void CheckOpen(CheckerContext &C, const CallExpr *CE) const;
51 void CheckOpenAt(CheckerContext &C, const CallExpr *CE) const;
52 void CheckPthreadOnce(CheckerContext &C, const CallExpr *CE) const;
54 void CheckOpenVariant(CheckerContext &C,
57 void ReportOpenBug(CheckerContext &C,
66 void checkPreStmt(const CallExpr *CE, CheckerContext &C) const;
71 void CheckCallocZero(CheckerContext &C, const CallExpr *CE) const;
72 void CheckMallocZero(CheckerContext &C, const CallExpr *CE) const;
73 void CheckReallocZero(CheckerContext &C, const CallExpr *CE) const;
74 void CheckReallocfZero(CheckerContext &C, const CallExpr *CE) const;
75 void CheckAllocaZero(CheckerContext &C, const CallExpr *CE) const;
76 void CheckAllocaWithAlignZero(CheckerContext &C, const CallExpr *CE) const;
77 void CheckVallocZero(CheckerContext &C, const CallExpr *CE) const;
79 bool ReportZeroByteAllocation(CheckerContext &C,
83 void BasicAllocationCheck(CheckerContext &C,
105 CheckerContext &C) const { in checkPreStmt()
106 const FunctionDecl *FD = C.getCalleeDecl(CE); in checkPreStmt()
116 StringRef FName = C.getCalleeName(FD); in checkPreStmt()
121 CheckOpen(C, CE); in checkPreStmt()
124 CheckOpenAt(C, CE); in checkPreStmt()
127 CheckPthreadOnce(C, CE); in checkPreStmt()
129 void UnixAPIMisuseChecker::ReportOpenBug(CheckerContext &C, in ReportOpenBug() argument
133 ExplodedNode *N = C.generateErrorNode(State); in ReportOpenBug()
141 C.emitReport(std::move(Report)); in ReportOpenBug()
144 void UnixAPIMisuseChecker::CheckOpen(CheckerContext &C, in CheckOpen() argument
146 CheckOpenVariant(C, CE, OpenVariant::Open); in CheckOpen()
149 void UnixAPIMisuseChecker::CheckOpenAt(CheckerContext &C, in CheckOpenAt() argument
151 CheckOpenVariant(C, CE, OpenVariant::OpenAt); in CheckOpenAt()
154 void UnixAPIMisuseChecker::CheckOpenVariant(CheckerContext &C, in CheckOpenVariant() argument
182 ProgramStateRef state = C.getState(); in CheckOpenVariant()
198 ReportOpenBug(C, state, in CheckOpenVariant()
209 ReportOpenBug(C, state, in CheckOpenVariant()
218 if (C.getASTContext().getTargetInfo().getTriple().getVendor() in CheckOpenVariant()
232 const SVal V = C.getSVal(oflagsEx); in CheckOpenVariant()
239 NonLoc ocreateFlag = C.getSValBuilder() in CheckOpenVariant()
241 SVal maskedFlagsUC = C.getSValBuilder().evalBinOpNN(state, BO_And, in CheckOpenVariant()
264 ReportOpenBug(C, trueState, in CheckOpenVariant()
274 void UnixAPIMisuseChecker::CheckPthreadOnce(CheckerContext &C, in CheckPthreadOnce() argument
285 ProgramStateRef state = C.getState(); in CheckPthreadOnce()
286 const MemRegion *R = C.getSVal(CE->getArg(0)).getAsRegion(); in CheckPthreadOnce()
290 ExplodedNode *N = C.generateErrorNode(state); in CheckPthreadOnce()
311 C.emitReport(std::move(report)); in CheckPthreadOnce()
338 CheckerContext &C, in ReportZeroByteAllocation() argument
342 ExplodedNode *N = C.generateErrorNode(falseState); in ReportZeroByteAllocation()
357 C.emitReport(std::move(report)); in ReportZeroByteAllocation()
364 void UnixAPIPortabilityChecker::BasicAllocationCheck(CheckerContext &C, in BasicAllocationCheck() argument
374 ProgramStateRef state = C.getState(); in BasicAllocationCheck()
377 SVal argVal = C.getSVal(arg); in BasicAllocationCheck()
384 (void) ReportZeroByteAllocation(C, falseState, arg, fn); in BasicAllocationCheck()
390 C.addTransition(trueState); in BasicAllocationCheck()
393 void UnixAPIPortabilityChecker::CheckCallocZero(CheckerContext &C, in CheckCallocZero() argument
399 ProgramStateRef state = C.getState(); in CheckCallocZero()
405 SVal argVal = C.getSVal(arg); in CheckCallocZero()
414 if (ReportZeroByteAllocation(C, falseState, arg, "calloc")) in CheckCallocZero()
426 C.addTransition(trueState); in CheckCallocZero()
429 void UnixAPIPortabilityChecker::CheckMallocZero(CheckerContext &C, in CheckMallocZero() argument
431 BasicAllocationCheck(C, CE, 1, 0, "malloc"); in CheckMallocZero()
434 void UnixAPIPortabilityChecker::CheckReallocZero(CheckerContext &C, in CheckReallocZero() argument
436 BasicAllocationCheck(C, CE, 2, 1, "realloc"); in CheckReallocZero()
439 void UnixAPIPortabilityChecker::CheckReallocfZero(CheckerContext &C, in CheckReallocfZero() argument
441 BasicAllocationCheck(C, CE, 2, 1, "reallocf"); in CheckReallocfZero()
444 void UnixAPIPortabilityChecker::CheckAllocaZero(CheckerContext &C, in CheckAllocaZero() argument
446 BasicAllocationCheck(C, CE, 1, 0, "alloca"); in CheckAllocaZero()
450 CheckerContext &C, in CheckAllocaWithAlignZero() argument
452 BasicAllocationCheck(C, CE, 2, 0, "__builtin_alloca_with_align"); in CheckAllocaWithAlignZero()
455 void UnixAPIPortabilityChecker::CheckVallocZero(CheckerContext &C, in CheckVallocZero() argument
457 BasicAllocationCheck(C, CE, 1, 0, "valloc"); in CheckVallocZero()
461 CheckerContext &C) const { in checkPreStmt()
462 const FunctionDecl *FD = C.getCalleeDecl(CE); in checkPreStmt()
472 StringRef FName = C.getCalleeName(FD); in checkPreStmt()
477 CheckCallocZero(C, CE); in checkPreStmt()
480 CheckMallocZero(C, CE); in checkPreStmt()
483 CheckReallocZero(C, CE); in checkPreStmt()
486 CheckReallocfZero(C, CE); in checkPreStmt()
489 CheckAllocaZero(C, CE); in checkPreStmt()
492 CheckAllocaWithAlignZero(C, CE); in checkPreStmt()
495 CheckVallocZero(C, CE); in checkPreStmt()