• Home
  • Raw
  • Download

Lines Matching refs:C

55 static bool isSelfVar(SVal location, CheckerContext &C);
66 void checkPostObjCMessage(const ObjCMethodCall &Msg, CheckerContext &C) const;
67 void checkPostStmt(const ObjCIvarRefExpr *E, CheckerContext &C) const;
68 void checkPreStmt(const ReturnStmt *S, CheckerContext &C) const;
70 CheckerContext &C) const;
71 void checkBind(SVal loc, SVal val, const Stmt *S, CheckerContext &C) const;
73 void checkPreCall(const CallEvent &CE, CheckerContext &C) const;
74 void checkPostCall(const CallEvent &CE, CheckerContext &C) const;
119 static SelfFlagEnum getSelfFlags(SVal val, CheckerContext &C) { in getSelfFlags() argument
120 return getSelfFlags(val, C.getState()); in getSelfFlags()
124 SelfFlagEnum flag, CheckerContext &C) { in addSelfFlag() argument
128 C.addTransition(state); in addSelfFlag()
132 static bool hasSelfFlag(SVal val, SelfFlagEnum flag, CheckerContext &C) { in hasSelfFlag() argument
133 return getSelfFlags(val, C) & flag; in hasSelfFlag()
139 static bool isInvalidSelf(const Expr *E, CheckerContext &C) { in isInvalidSelf() argument
140 SVal exprVal = C.getState()->getSVal(E, C.getLocationContext()); in isInvalidSelf()
141 if (!hasSelfFlag(exprVal, SelfFlag_Self, C)) in isInvalidSelf()
143 if (hasSelfFlag(exprVal, SelfFlag_InitRes, C)) in isInvalidSelf()
149 static void checkForInvalidSelf(const Expr *E, CheckerContext &C, in checkForInvalidSelf() argument
154 if (!C.getState()->get<CalledInit>()) in checkForInvalidSelf()
157 if (!isInvalidSelf(E, C)) in checkForInvalidSelf()
161 ExplodedNode *N = C.generateSink(); in checkForInvalidSelf()
167 C.emitReport(report); in checkForInvalidSelf()
171 CheckerContext &C) const { in checkPostObjCMessage()
178 C.getCurrentAnalysisDeclContext()->getDecl()))) in checkPostObjCMessage()
183 ProgramStateRef state = C.getState(); in checkPostObjCMessage()
190 SVal V = state->getSVal(Msg.getOriginExpr(), C.getLocationContext()); in checkPostObjCMessage()
191 addSelfFlag(state, V, SelfFlag_InitRes, C); in checkPostObjCMessage()
202 CheckerContext &C) const { in checkPostStmt()
205 C.getCurrentAnalysisDeclContext()->getDecl()))) in checkPostStmt()
208 checkForInvalidSelf(E->getBase(), C, in checkPostStmt()
214 CheckerContext &C) const { in checkPreStmt()
217 C.getCurrentAnalysisDeclContext()->getDecl()))) in checkPreStmt()
220 checkForInvalidSelf(S->getRetValue(), C, in checkPreStmt()
242 CheckerContext &C) const { in checkPreCall()
245 C.getCurrentAnalysisDeclContext()->getDecl()))) in checkPreCall()
248 ProgramStateRef state = C.getState(); in checkPreCall()
257 if (isSelfVar(argV, C)) { in checkPreCall()
258 unsigned selfFlags = getSelfFlags(state->getSVal(argV.castAs<Loc>()), C); in checkPreCall()
259 C.addTransition(state->set<PreCallSelfFlags>(selfFlags)); in checkPreCall()
261 } else if (hasSelfFlag(argV, SelfFlag_Self, C)) { in checkPreCall()
262 unsigned selfFlags = getSelfFlags(argV, C); in checkPreCall()
263 C.addTransition(state->set<PreCallSelfFlags>(selfFlags)); in checkPreCall()
270 CheckerContext &C) const { in checkPostCall()
273 C.getCurrentAnalysisDeclContext()->getDecl()))) in checkPostCall()
276 ProgramStateRef state = C.getState(); in checkPostCall()
285 if (isSelfVar(argV, C)) { in checkPostCall()
289 addSelfFlag(state, state->getSVal(argV.castAs<Loc>()), prevFlags, C); in checkPostCall()
291 } else if (hasSelfFlag(argV, SelfFlag_Self, C)) { in checkPostCall()
296 addSelfFlag(state, CE.getReturnValue(), prevFlags, C); in checkPostCall()
301 C.addTransition(state); in checkPostCall()
306 CheckerContext &C) const { in checkLocation()
308 C.getCurrentAnalysisDeclContext()->getDecl()))) in checkLocation()
313 ProgramStateRef state = C.getState(); in checkLocation()
314 if (isSelfVar(location, C)) in checkLocation()
316 C); in checkLocation()
321 CheckerContext &C) const { in checkBind()
327 if ((isSelfVar(loc, C)) && in checkBind()
328 !hasSelfFlag(val, SelfFlag_InitRes, C) && in checkBind()
329 !hasSelfFlag(val, SelfFlag_Self, C) && in checkBind()
330 !isSelfVar(val, C)) { in checkBind()
333 ProgramStateRef State = C.getState(); in checkBind()
337 C.addTransition(State); in checkBind()
417 static bool isSelfVar(SVal location, CheckerContext &C) { in isSelfVar() argument
418 AnalysisDeclContext *analCtx = C.getCurrentAnalysisDeclContext(); in isSelfVar()