Lines Matching refs:CE

61   bool evalCall(const CallExpr *CE, CheckerContext &C) const;
77 void evalMemcpy(CheckerContext &C, const CallExpr *CE) const;
78 void evalMempcpy(CheckerContext &C, const CallExpr *CE) const;
79 void evalMemmove(CheckerContext &C, const CallExpr *CE) const;
80 void evalBcopy(CheckerContext &C, const CallExpr *CE) const;
81 void evalCopyCommon(CheckerContext &C, const CallExpr *CE,
89 void evalMemcmp(CheckerContext &C, const CallExpr *CE) const;
91 void evalstrLength(CheckerContext &C, const CallExpr *CE) const;
92 void evalstrnLength(CheckerContext &C, const CallExpr *CE) const;
94 const CallExpr *CE,
97 void evalStrcpy(CheckerContext &C, const CallExpr *CE) const;
98 void evalStrncpy(CheckerContext &C, const CallExpr *CE) const;
99 void evalStpcpy(CheckerContext &C, const CallExpr *CE) const;
100 void evalStrlcpy(CheckerContext &C, const CallExpr *CE) const;
102 const CallExpr *CE,
108 void evalStrcat(CheckerContext &C, const CallExpr *CE) const;
109 void evalStrncat(CheckerContext &C, const CallExpr *CE) const;
110 void evalStrlcat(CheckerContext &C, const CallExpr *CE) const;
112 void evalStrcmp(CheckerContext &C, const CallExpr *CE) const;
113 void evalStrncmp(CheckerContext &C, const CallExpr *CE) const;
114 void evalStrcasecmp(CheckerContext &C, const CallExpr *CE) const;
115 void evalStrncasecmp(CheckerContext &C, const CallExpr *CE) const;
117 const CallExpr *CE,
121 void evalStrsep(CheckerContext &C, const CallExpr *CE) const;
123 void evalStdCopy(CheckerContext &C, const CallExpr *CE) const;
124 void evalStdCopyBackward(CheckerContext &C, const CallExpr *CE) const;
125 void evalStdCopyCommon(CheckerContext &C, const CallExpr *CE) const;
126 void evalMemset(CheckerContext &C, const CallExpr *CE) const;
127 void evalBzero(CheckerContext &C, const CallExpr *CE) const;
1102 const CallExpr *CE, in evalCopyCommon() argument
1124 stateZeroSize = stateZeroSize->BindExpr(CE, LCtx, destVal); in evalCopyCommon()
1173 lastElement = C.getSValBuilder().conjureSymbolVal(nullptr, CE, LCtx, in evalCopyCommon()
1177 state = state->BindExpr(CE, LCtx, lastElement); in evalCopyCommon()
1181 state = state->BindExpr(CE, LCtx, destVal); in evalCopyCommon()
1203 void CStringChecker::evalMemcpy(CheckerContext &C, const CallExpr *CE) const { in evalMemcpy()
1204 if (CE->getNumArgs() < 3) in evalMemcpy()
1209 const Expr *Dest = CE->getArg(0); in evalMemcpy()
1212 evalCopyCommon(C, CE, state, CE->getArg(2), Dest, CE->getArg(1), true); in evalMemcpy()
1215 void CStringChecker::evalMempcpy(CheckerContext &C, const CallExpr *CE) const { in evalMempcpy()
1216 if (CE->getNumArgs() < 3) in evalMempcpy()
1221 const Expr *Dest = CE->getArg(0); in evalMempcpy()
1224 evalCopyCommon(C, CE, state, CE->getArg(2), Dest, CE->getArg(1), true, true); in evalMempcpy()
1227 void CStringChecker::evalMemmove(CheckerContext &C, const CallExpr *CE) const { in evalMemmove()
1228 if (CE->getNumArgs() < 3) in evalMemmove()
1233 const Expr *Dest = CE->getArg(0); in evalMemmove()
1236 evalCopyCommon(C, CE, state, CE->getArg(2), Dest, CE->getArg(1)); in evalMemmove()
1239 void CStringChecker::evalBcopy(CheckerContext &C, const CallExpr *CE) const { in evalBcopy()
1240 if (CE->getNumArgs() < 3) in evalBcopy()
1244 evalCopyCommon(C, CE, C.getState(), in evalBcopy()
1245 CE->getArg(2), CE->getArg(1), CE->getArg(0)); in evalBcopy()
1248 void CStringChecker::evalMemcmp(CheckerContext &C, const CallExpr *CE) const { in evalMemcmp()
1249 if (CE->getNumArgs() < 3) in evalMemcmp()
1255 const Expr *Left = CE->getArg(0); in evalMemcmp()
1256 const Expr *Right = CE->getArg(1); in evalMemcmp()
1257 const Expr *Size = CE->getArg(2); in evalMemcmp()
1275 state = state->BindExpr(CE, LCtx, in evalMemcmp()
1276 svalBuilder.makeZeroVal(CE->getType())); in evalMemcmp()
1302 state = StSameBuf->BindExpr(CE, LCtx, in evalMemcmp()
1303 svalBuilder.makeZeroVal(CE->getType())); in evalMemcmp()
1315 SVal CmpV = svalBuilder.conjureSymbolVal(nullptr, CE, LCtx, in evalMemcmp()
1317 state = state->BindExpr(CE, LCtx, CmpV); in evalMemcmp()
1325 const CallExpr *CE) const { in evalstrLength()
1326 if (CE->getNumArgs() < 1) in evalstrLength()
1330 evalstrLengthCommon(C, CE, /* IsStrnlen = */ false); in evalstrLength()
1334 const CallExpr *CE) const { in evalstrnLength()
1335 if (CE->getNumArgs() < 2) in evalstrnLength()
1339 evalstrLengthCommon(C, CE, /* IsStrnlen = */ true); in evalstrnLength()
1342 void CStringChecker::evalstrLengthCommon(CheckerContext &C, const CallExpr *CE, in evalstrLengthCommon() argument
1349 const Expr *maxlenExpr = CE->getArg(1); in evalstrLengthCommon()
1359 SVal zero = C.getSValBuilder().makeZeroVal(CE->getType()); in evalstrLengthCommon()
1360 stateZeroSize = stateZeroSize->BindExpr(CE, LCtx, zero); in evalstrLengthCommon()
1373 const Expr *Arg = CE->getArg(0); in evalstrLengthCommon()
1397 const Expr *maxlenExpr = CE->getArg(1); in evalstrLengthCommon()
1426 result = C.getSValBuilder().conjureSymbolVal(nullptr, CE, LCtx, in evalstrLengthCommon()
1450 result = C.getSValBuilder().conjureSymbolVal(nullptr, CE, LCtx, in evalstrLengthCommon()
1457 state = state->BindExpr(CE, LCtx, result); in evalstrLengthCommon()
1461 void CStringChecker::evalStrcpy(CheckerContext &C, const CallExpr *CE) const { in evalStrcpy()
1462 if (CE->getNumArgs() < 2) in evalStrcpy()
1466 evalStrcpyCommon(C, CE, in evalStrcpy()
1472 void CStringChecker::evalStrncpy(CheckerContext &C, const CallExpr *CE) const { in evalStrncpy()
1473 if (CE->getNumArgs() < 3) in evalStrncpy()
1477 evalStrcpyCommon(C, CE, in evalStrncpy()
1483 void CStringChecker::evalStpcpy(CheckerContext &C, const CallExpr *CE) const { in evalStpcpy()
1484 if (CE->getNumArgs() < 2) in evalStpcpy()
1488 evalStrcpyCommon(C, CE, in evalStpcpy()
1494 void CStringChecker::evalStrlcpy(CheckerContext &C, const CallExpr *CE) const { in evalStrlcpy()
1495 if (CE->getNumArgs() < 3) in evalStrlcpy()
1499 evalStrcpyCommon(C, CE, in evalStrlcpy()
1506 void CStringChecker::evalStrcat(CheckerContext &C, const CallExpr *CE) const { in evalStrcat()
1507 if (CE->getNumArgs() < 2) in evalStrcat()
1511 evalStrcpyCommon(C, CE, in evalStrcat()
1517 void CStringChecker::evalStrncat(CheckerContext &C, const CallExpr *CE) const { in evalStrncat()
1518 if (CE->getNumArgs() < 3) in evalStrncat()
1522 evalStrcpyCommon(C, CE, in evalStrncat()
1528 void CStringChecker::evalStrlcat(CheckerContext &C, const CallExpr *CE) const { in evalStrlcat()
1529 if (CE->getNumArgs() < 3) in evalStrlcat()
1533 evalStrcpyCommon(C, CE, in evalStrlcat()
1540 void CStringChecker::evalStrcpyCommon(CheckerContext &C, const CallExpr *CE, in evalStrcpyCommon() argument
1548 const Expr *Dst = CE->getArg(0); in evalStrcpyCommon()
1556 const Expr *srcExpr = CE->getArg(1); in evalStrcpyCommon()
1580 state = CheckOverlap(C, state, isBounded ? CE->getArg(2) : CE->getArg(1), Dst, srcExpr); in evalStrcpyCommon()
1588 const Expr *lenExpr = CE->getArg(2); in evalStrcpyCommon()
1658 StateZeroSize = StateZeroSize->BindExpr(CE, LCtx, DstVal); in evalStrcpyCommon()
1660 StateZeroSize = StateZeroSize->BindExpr(CE, LCtx, *lenValNL); in evalStrcpyCommon()
1756 finalStrLength = getCStringLength(C, state, CE, DstVal, true); in evalStrcpyCommon()
1816 state = CheckLocation(C, state, CE->getArg(2), maxLastElement, in evalStrcpyCommon()
1875 Result = svalBuilder.conjureSymbolVal(nullptr, CE, LCtx, C.blockCount()); in evalStrcpyCommon()
1879 state = state->BindExpr(CE, LCtx, Result); in evalStrcpyCommon()
1883 void CStringChecker::evalStrcmp(CheckerContext &C, const CallExpr *CE) const { in evalStrcmp()
1884 if (CE->getNumArgs() < 2) in evalStrcmp()
1888 evalStrcmpCommon(C, CE, /* isBounded = */ false, /* ignoreCase = */ false); in evalStrcmp()
1891 void CStringChecker::evalStrncmp(CheckerContext &C, const CallExpr *CE) const { in evalStrncmp()
1892 if (CE->getNumArgs() < 3) in evalStrncmp()
1896 evalStrcmpCommon(C, CE, /* isBounded = */ true, /* ignoreCase = */ false); in evalStrncmp()
1900 const CallExpr *CE) const { in evalStrcasecmp()
1901 if (CE->getNumArgs() < 2) in evalStrcasecmp()
1905 evalStrcmpCommon(C, CE, /* isBounded = */ false, /* ignoreCase = */ true); in evalStrcasecmp()
1909 const CallExpr *CE) const { in evalStrncasecmp()
1910 if (CE->getNumArgs() < 3) in evalStrncasecmp()
1914 evalStrcmpCommon(C, CE, /* isBounded = */ true, /* ignoreCase = */ true); in evalStrncasecmp()
1917 void CStringChecker::evalStrcmpCommon(CheckerContext &C, const CallExpr *CE, in evalStrcmpCommon() argument
1924 const Expr *s1 = CE->getArg(0); in evalStrcmpCommon()
1931 const Expr *s2 = CE->getArg(1); in evalStrcmpCommon()
1962 StSameBuf = StSameBuf->BindExpr(CE, LCtx, in evalStrcmpCommon()
1963 svalBuilder.makeZeroVal(CE->getType())); in evalStrcmpCommon()
1981 SVal resultVal = svalBuilder.conjureSymbolVal(nullptr, CE, LCtx, in evalStrcmpCommon()
1990 const Expr *lenExpr = CE->getArg(2); in evalStrcmpCommon()
2022 resultVal = svalBuilder.makeIntVal(compareRes, CE->getType()); in evalStrcmpCommon()
2025 DefinedSVal zeroVal = svalBuilder.makeIntVal(0, CE->getType()); in evalStrcmpCommon()
2038 state = state->BindExpr(CE, LCtx, resultVal); in evalStrcmpCommon()
2044 void CStringChecker::evalStrsep(CheckerContext &C, const CallExpr *CE) const { in evalStrsep()
2046 if (CE->getNumArgs() < 2) in evalStrsep()
2050 const Expr *SearchStrPtr = CE->getArg(0); in evalStrsep()
2053 CE->getType().getUnqualifiedType() != CharPtrTy.getUnqualifiedType()) in evalStrsep()
2068 const Expr *DelimStr = CE->getArg(1); in evalStrsep()
2089 CE, in evalStrsep()
2097 Result = SVB.conjureSymbolVal(nullptr, CE, LCtx, C.blockCount()); in evalStrsep()
2101 State = State->BindExpr(CE, LCtx, Result); in evalStrsep()
2106 void CStringChecker::evalStdCopy(CheckerContext &C, const CallExpr *CE) const { in evalStdCopy()
2107 evalStdCopyCommon(C, CE); in evalStdCopy()
2111 const CallExpr *CE) const { in evalStdCopyBackward()
2112 evalStdCopyCommon(C, CE); in evalStdCopyBackward()
2116 const CallExpr *CE) const { in evalStdCopyCommon()
2117 if (CE->getNumArgs() < 3) in evalStdCopyCommon()
2130 const Expr *Dst = CE->getArg(2); in evalStdCopyCommon()
2137 SVal ResultVal = SVB.conjureSymbolVal(nullptr, CE, LCtx, C.blockCount()); in evalStdCopyCommon()
2138 State = State->BindExpr(CE, LCtx, ResultVal); in evalStdCopyCommon()
2143 void CStringChecker::evalMemset(CheckerContext &C, const CallExpr *CE) const { in evalMemset()
2144 if (CE->getNumArgs() != 3) in evalMemset()
2149 const Expr *Mem = CE->getArg(0); in evalMemset()
2150 const Expr *CharE = CE->getArg(1); in evalMemset()
2151 const Expr *Size = CE->getArg(2); in evalMemset()
2169 StateZeroSize = StateZeroSize->BindExpr(CE, LCtx, MemVal); in evalMemset()
2190 State = State->BindExpr(CE, LCtx, MemVal); in evalMemset()
2194 void CStringChecker::evalBzero(CheckerContext &C, const CallExpr *CE) const { in evalBzero()
2195 if (CE->getNumArgs() != 2) in evalBzero()
2200 const Expr *Mem = CE->getArg(0); in evalBzero()
2201 const Expr *Size = CE->getArg(1); in evalBzero()
2257 static CStringChecker::FnCheck identifyCall(const CallExpr *CE, in identifyCall() argument
2259 const FunctionDecl *FDecl = C.getCalleeDecl(CE); in identifyCall()
2267 if (CE->getNumArgs() < 3 || !CE->getArg(2)->getType()->isPointerType()) in identifyCall()
2271 if (CE->getNumArgs() < 3 || !CE->getArg(2)->getType()->isPointerType()) in identifyCall()
2276 for (auto I: CE->arguments()) { in identifyCall()
2334 bool CStringChecker::evalCall(const CallExpr *CE, CheckerContext &C) const { in evalCall() argument
2336 FnCheck evalFunction = identifyCall(CE, C); in evalCall()
2343 (this->*evalFunction)(C, CE); in evalCall()