Lines Matching refs:C
76 bool evalCall(const CallExpr *CE, CheckerContext &C) const;
77 void checkDeadSymbols(SymbolReaper &SymReaper, CheckerContext &C) const;
80 void Fopen(CheckerContext &C, const CallExpr *CE) const;
81 void Tmpfile(CheckerContext &C, const CallExpr *CE) const;
82 void Fclose(CheckerContext &C, const CallExpr *CE) const;
83 void Fread(CheckerContext &C, const CallExpr *CE) const;
84 void Fwrite(CheckerContext &C, const CallExpr *CE) const;
85 void Fseek(CheckerContext &C, const CallExpr *CE) const;
86 void Ftell(CheckerContext &C, const CallExpr *CE) const;
87 void Rewind(CheckerContext &C, const CallExpr *CE) const;
88 void Fgetpos(CheckerContext &C, const CallExpr *CE) const;
89 void Fsetpos(CheckerContext &C, const CallExpr *CE) const;
90 void Clearerr(CheckerContext &C, const CallExpr *CE) const;
91 void Feof(CheckerContext &C, const CallExpr *CE) const;
92 void Ferror(CheckerContext &C, const CallExpr *CE) const;
93 void Fileno(CheckerContext &C, const CallExpr *CE) const;
95 void OpenFileAux(CheckerContext &C, const CallExpr *CE) const;
98 CheckerContext &C) const;
100 CheckerContext &C) const;
108 bool StreamChecker::evalCall(const CallExpr *CE, CheckerContext &C) const { in REGISTER_MAP_WITH_PROGRAMSTATE()
109 const FunctionDecl *FD = C.getCalleeDecl(CE); in REGISTER_MAP_WITH_PROGRAMSTATE()
113 ASTContext &Ctx = C.getASTContext(); in REGISTER_MAP_WITH_PROGRAMSTATE()
144 Fopen(C, CE); in REGISTER_MAP_WITH_PROGRAMSTATE()
148 Tmpfile(C, CE); in REGISTER_MAP_WITH_PROGRAMSTATE()
152 Fclose(C, CE); in REGISTER_MAP_WITH_PROGRAMSTATE()
156 Fread(C, CE); in REGISTER_MAP_WITH_PROGRAMSTATE()
160 Fwrite(C, CE); in REGISTER_MAP_WITH_PROGRAMSTATE()
164 Fseek(C, CE); in REGISTER_MAP_WITH_PROGRAMSTATE()
168 Ftell(C, CE); in REGISTER_MAP_WITH_PROGRAMSTATE()
172 Rewind(C, CE); in REGISTER_MAP_WITH_PROGRAMSTATE()
176 Fgetpos(C, CE); in REGISTER_MAP_WITH_PROGRAMSTATE()
180 Fsetpos(C, CE); in REGISTER_MAP_WITH_PROGRAMSTATE()
184 Clearerr(C, CE); in REGISTER_MAP_WITH_PROGRAMSTATE()
188 Feof(C, CE); in REGISTER_MAP_WITH_PROGRAMSTATE()
192 Ferror(C, CE); in REGISTER_MAP_WITH_PROGRAMSTATE()
196 Fileno(C, CE); in REGISTER_MAP_WITH_PROGRAMSTATE()
203 void StreamChecker::Fopen(CheckerContext &C, const CallExpr *CE) const { in Fopen() argument
204 OpenFileAux(C, CE); in Fopen()
207 void StreamChecker::Tmpfile(CheckerContext &C, const CallExpr *CE) const { in Tmpfile() argument
208 OpenFileAux(C, CE); in Tmpfile()
211 void StreamChecker::OpenFileAux(CheckerContext &C, const CallExpr *CE) const { in OpenFileAux() argument
212 ProgramStateRef state = C.getState(); in OpenFileAux()
213 SValBuilder &svalBuilder = C.getSValBuilder(); in OpenFileAux()
214 const LocationContext *LCtx = C.getPredecessor()->getLocationContext(); in OpenFileAux()
216 C.blockCount()) in OpenFileAux()
218 state = state->BindExpr(CE, C.getLocationContext(), RetVal); in OpenFileAux()
220 ConstraintManager &CM = C.getConstraintManager(); in OpenFileAux()
233 C.addTransition(stateNotNull); in OpenFileAux()
234 C.addTransition(stateNull); in OpenFileAux()
238 void StreamChecker::Fclose(CheckerContext &C, const CallExpr *CE) const { in Fclose() argument
239 ProgramStateRef state = CheckDoubleClose(CE, C.getState(), C); in Fclose()
241 C.addTransition(state); in Fclose()
244 void StreamChecker::Fread(CheckerContext &C, const CallExpr *CE) const { in Fread() argument
245 ProgramStateRef state = C.getState(); in Fread()
246 if (!CheckNullStream(state->getSVal(CE->getArg(3), C.getLocationContext()), in Fread()
247 state, C)) in Fread()
251 void StreamChecker::Fwrite(CheckerContext &C, const CallExpr *CE) const { in Fwrite() argument
252 ProgramStateRef state = C.getState(); in Fwrite()
253 if (!CheckNullStream(state->getSVal(CE->getArg(3), C.getLocationContext()), in Fwrite()
254 state, C)) in Fwrite()
258 void StreamChecker::Fseek(CheckerContext &C, const CallExpr *CE) const { in Fseek() argument
259 ProgramStateRef state = C.getState(); in Fseek()
261 C.getLocationContext()), state, C))) in Fseek()
264 SVal Whence = state->getSVal(CE->getArg(2), C.getLocationContext()); in Fseek()
274 if (ExplodedNode *N = C.generateNonFatalErrorNode(state)) { in Fseek()
280 C.emitReport(llvm::make_unique<BugReport>( in Fseek()
285 void StreamChecker::Ftell(CheckerContext &C, const CallExpr *CE) const { in Ftell() argument
286 ProgramStateRef state = C.getState(); in Ftell()
287 if (!CheckNullStream(state->getSVal(CE->getArg(0), C.getLocationContext()), in Ftell()
288 state, C)) in Ftell()
292 void StreamChecker::Rewind(CheckerContext &C, const CallExpr *CE) const { in Rewind() argument
293 ProgramStateRef state = C.getState(); in Rewind()
294 if (!CheckNullStream(state->getSVal(CE->getArg(0), C.getLocationContext()), in Rewind()
295 state, C)) in Rewind()
299 void StreamChecker::Fgetpos(CheckerContext &C, const CallExpr *CE) const { in Fgetpos() argument
300 ProgramStateRef state = C.getState(); in Fgetpos()
301 if (!CheckNullStream(state->getSVal(CE->getArg(0), C.getLocationContext()), in Fgetpos()
302 state, C)) in Fgetpos()
306 void StreamChecker::Fsetpos(CheckerContext &C, const CallExpr *CE) const { in Fsetpos() argument
307 ProgramStateRef state = C.getState(); in Fsetpos()
308 if (!CheckNullStream(state->getSVal(CE->getArg(0), C.getLocationContext()), in Fsetpos()
309 state, C)) in Fsetpos()
313 void StreamChecker::Clearerr(CheckerContext &C, const CallExpr *CE) const { in Clearerr() argument
314 ProgramStateRef state = C.getState(); in Clearerr()
315 if (!CheckNullStream(state->getSVal(CE->getArg(0), C.getLocationContext()), in Clearerr()
316 state, C)) in Clearerr()
320 void StreamChecker::Feof(CheckerContext &C, const CallExpr *CE) const { in Feof() argument
321 ProgramStateRef state = C.getState(); in Feof()
322 if (!CheckNullStream(state->getSVal(CE->getArg(0), C.getLocationContext()), in Feof()
323 state, C)) in Feof()
327 void StreamChecker::Ferror(CheckerContext &C, const CallExpr *CE) const { in Ferror() argument
328 ProgramStateRef state = C.getState(); in Ferror()
329 if (!CheckNullStream(state->getSVal(CE->getArg(0), C.getLocationContext()), in Ferror()
330 state, C)) in Ferror()
334 void StreamChecker::Fileno(CheckerContext &C, const CallExpr *CE) const { in Fileno() argument
335 ProgramStateRef state = C.getState(); in Fileno()
336 if (!CheckNullStream(state->getSVal(CE->getArg(0), C.getLocationContext()), in Fileno()
337 state, C)) in Fileno()
342 CheckerContext &C) const { in CheckNullStream()
347 ConstraintManager &CM = C.getConstraintManager(); in CheckNullStream()
352 if (ExplodedNode *N = C.generateErrorNode(stateNull)) { in CheckNullStream()
356 C.emitReport(llvm::make_unique<BugReport>( in CheckNullStream()
366 CheckerContext &C) const { in CheckDoubleClose()
368 state->getSVal(CE->getArg(0), C.getLocationContext()).getAsSymbol(); in CheckDoubleClose()
381 ExplodedNode *N = C.generateErrorNode(); in CheckDoubleClose()
387 C.emitReport(llvm::make_unique<BugReport>( in CheckDoubleClose()
398 CheckerContext &C) const { in checkDeadSymbols()
403 ProgramStateRef state = C.getState(); in checkDeadSymbols()
409 ExplodedNode *N = C.generateErrorNode(); in checkDeadSymbols()
415 C.emitReport(llvm::make_unique<BugReport>( in checkDeadSymbols()