Lines Matching full:sval
128 ProgramStateRef state, SVal V, QualType Ty);
132 SVal strLength);
133 static SVal getCStringLengthForRegion(CheckerContext &C,
138 SVal getCStringLength(CheckerContext &C,
141 SVal Buf,
147 SVal val) const;
151 const Expr *Ex, SVal V,
162 SVal l) const;
166 SVal l,
203 // Expects SVal of Size to be positive and unsigned.
204 // Expects SVal of FirstBuf to be a FieldRegion.
213 REGISTER_MAP_WITH_PROGRAMSTATE(CStringLength, const MemRegion *, SVal)
220 CStringChecker::assumeZero(CheckerContext &C, ProgramStateRef state, SVal V,
233 const Expr *S, SVal l) const {
277 const Expr *S, SVal l,
298 SVal Extent =
369 SVal BufVal = state->getSVal(FirstBuf, LCtx);
381 SVal LengthVal = state->getSVal(Size, LCtx);
392 SVal BufStart = svalBuilder.evalCast(BufVal, PtrTy, FirstBuf->getType());
396 SVal
416 SVal BufEnd = svalBuilder.evalBinOpLN(state, BO_Add, *BufLoc,
446 SVal firstVal = state->getSVal(First, LCtx);
447 SVal secondVal = state->getSVal(Second, LCtx);
474 SVal reverse = svalBuilder.evalBinOpLL(state, BO_GT,
496 SVal LengthVal = state->getSVal(Size, LCtx);
505 SVal FirstStart = svalBuilder.evalCast(*firstLoc, CharPtrTy,
512 SVal FirstEnd = svalBuilder.evalBinOpLN(state, BO_Add,
519 SVal Overlap = svalBuilder.evalBinOpLL(state, BO_GT,
577 SVal maxMinusRight;
592 SVal willOverflow = svalBuilder.evalBinOpNN(state, BO_GT, left,
634 SVal strLength) {
672 SVal CStringChecker::getCStringLengthForRegion(CheckerContext &C,
679 const SVal *Recorded = state->get<CStringLength>(MR);
687 SVal strLength = svalBuilder.getMetadataSymbolVal(CStringChecker::getTag(),
700 SVal evalLength = svalBuilder.evalBinOpNN(state, BO_LE, *strLn,
710 SVal CStringChecker::getCStringLength(CheckerContext &C, ProgramStateRef &state,
711 const Expr *Ex, SVal Buf,
811 ProgramStateRef &state, const Expr *expr, SVal val) const {
845 SVal BufVal = state->getSVal(FirstBuf, LCtx);
847 SVal LengthVal = state->getSVal(Size, LCtx);
859 SVal BufStart = svalBuilder.evalCast(BufVal, PtrTy, FirstBuf->getType());
864 SVal BufEnd =
881 SVal Extent =
895 const Expr *E, SVal V,
1001 SVal sizeVal = state->getSVal(Size, LCtx);
1009 SVal destVal = state->getSVal(Dest, LCtx);
1030 SVal srcVal = state->getSVal(Source, LCtx);
1062 SVal lastElement = C.getSValBuilder().evalBinOpLN(state, BO_Add,
1072 SVal result = C.getSValBuilder().conjureSymbolVal(nullptr, CE, LCtx,
1163 SVal sizeVal = state->getSVal(Size, LCtx);
1214 SVal CmpV = svalBuilder.conjureSymbolVal(nullptr, CE, LCtx,
1249 SVal maxlenVal = state->getSVal(maxlenExpr, LCtx);
1258 SVal zero = C.getSValBuilder().makeZeroVal(CE->getType());
1273 SVal ArgVal = state->getSVal(Arg, LCtx);
1280 SVal strLength = getCStringLength(C, state, Arg, ArgVal);
1297 SVal maxlenVal = state->getSVal(maxlenExpr, LCtx);
1424 SVal DstVal = state->getSVal(Dst, LCtx);
1432 SVal srcVal = state->getSVal(srcExpr, LCtx);
1438 SVal strLength = getCStringLength(C, state, srcExpr, srcVal);
1451 SVal amountCopied = UnknownVal();
1452 SVal maxLastElementIndex = UnknownVal();
1459 SVal lenVal = state->getSVal(lenExpr, LCtx);
1500 SVal dstStrLength = getCStringLength(C, state, Dst, DstVal);
1556 SVal copiedLessThanBound = svalBuilder.evalBinOpNN(state, BO_LE,
1568 SVal copiedLessThanSrc = svalBuilder.evalBinOpNN(state, BO_LE,
1591 SVal finalStrLength = UnknownVal();
1599 SVal dstStrLength = getCStringLength(C, state, Dst, DstVal);
1628 SVal sourceInResult = svalBuilder.evalBinOpNN(state, BO_GE,
1640 SVal destInResult = svalBuilder.evalBinOpNN(state, BO_GE,
1660 SVal Result = (returnEnd ? UnknownVal() : DstVal);
1674 SVal maxLastElement = svalBuilder.evalBinOpLN(state, BO_Add, *dstRegVal,
1685 SVal lastElement = svalBuilder.evalBinOpLN(state, BO_Add, *dstRegVal,
1784 SVal s1Val = state->getSVal(s1, LCtx);
1791 SVal s2Val = state->getSVal(s2, LCtx);
1797 SVal s1Length = getCStringLength(C, state, s1, s1Val);
1802 SVal s2Length = getCStringLength(C, state, s2, s2Val);
1840 SVal resultVal = svalBuilder.conjureSymbolVal(nullptr, CE, LCtx,
1850 SVal lenVal = state->getSVal(lenExpr, LCtx);
1888 SVal compareWithZero =
1921 SVal SearchStrVal = State->getSVal(SearchStrPtr, LCtx);
1928 SVal DelimStrVal = State->getSVal(DelimStr, LCtx);
1934 SVal Result;
1986 SVal DstVal = State->getSVal(Dst, LCtx);
1992 SVal ResultVal = SVB.conjureSymbolVal(nullptr, CE, LCtx, C.blockCount());
2104 SVal StrVal = state->getSVal(Init, C.getLocationContext());
2180 SVal Len = I.getData();
2201 SVal Len = I.getData();