svf-lib 1.0.1609 → 1.0.1611
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
Binary file
|
|
Binary file
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
#ifndef SVF_BOUNDEDZ3EXPR_H
|
|
31
31
|
#define SVF_BOUNDEDZ3EXPR_H
|
|
32
|
+
#define MaxBvLen 64
|
|
32
33
|
|
|
33
34
|
#include "Util/Z3Expr.h"
|
|
34
35
|
|
|
@@ -248,20 +249,17 @@ public:
|
|
|
248
249
|
|
|
249
250
|
friend BoundedZ3Expr operator^(const BoundedZ3Expr &lhs, const BoundedZ3Expr &rhs)
|
|
250
251
|
{
|
|
251
|
-
|
|
252
|
-
return bv2int(int2bv(maxBvLen, lhs.getExpr()) ^ int2bv(maxBvLen, rhs.getExpr()), true);
|
|
252
|
+
return bv2int(int2bv(MaxBvLen, lhs.getExpr()) ^ int2bv(MaxBvLen, rhs.getExpr()), true);
|
|
253
253
|
}
|
|
254
254
|
|
|
255
255
|
friend BoundedZ3Expr operator&(const BoundedZ3Expr &lhs, const BoundedZ3Expr &rhs)
|
|
256
256
|
{
|
|
257
|
-
|
|
258
|
-
return bv2int(int2bv(maxBvLen, lhs.getExpr()) & int2bv(maxBvLen, rhs.getExpr()), true);
|
|
257
|
+
return bv2int(int2bv(MaxBvLen, lhs.getExpr()) & int2bv(MaxBvLen, rhs.getExpr()), true);
|
|
259
258
|
}
|
|
260
259
|
|
|
261
260
|
friend BoundedZ3Expr operator|(const BoundedZ3Expr &lhs, const BoundedZ3Expr &rhs)
|
|
262
261
|
{
|
|
263
|
-
|
|
264
|
-
return bv2int(int2bv(maxBvLen, lhs.getExpr()) | int2bv(maxBvLen, rhs.getExpr()), true);
|
|
262
|
+
return bv2int(int2bv(MaxBvLen, lhs.getExpr()) | int2bv(MaxBvLen, rhs.getExpr()), true);
|
|
265
263
|
}
|
|
266
264
|
|
|
267
265
|
friend BoundedZ3Expr ashr(const BoundedZ3Expr &lhs, const BoundedZ3Expr &rhs)
|
|
@@ -274,8 +272,7 @@ public:
|
|
|
274
272
|
return ite(lhs.getExpr() >= 0, BoundedZ3Expr(0), BoundedZ3Expr(-1));
|
|
275
273
|
else
|
|
276
274
|
{
|
|
277
|
-
|
|
278
|
-
return bv2int(ashr(int2bv(maxBvLen, lhs.getExpr()), int2bv(maxBvLen, rhs.getExpr())), true);
|
|
275
|
+
return bv2int(ashr(int2bv(MaxBvLen, lhs.getExpr()), int2bv(MaxBvLen, rhs.getExpr())), true);
|
|
279
276
|
}
|
|
280
277
|
}
|
|
281
278
|
|
|
@@ -289,15 +286,13 @@ public:
|
|
|
289
286
|
return ite(lhs.getExpr() >= 0, plus_infinity(), minus_infinity());
|
|
290
287
|
else
|
|
291
288
|
{
|
|
292
|
-
|
|
293
|
-
return bv2int(shl(int2bv(maxBvLen, lhs.getExpr()), int2bv(maxBvLen, rhs.getExpr())), true);
|
|
289
|
+
return bv2int(shl(int2bv(MaxBvLen, lhs.getExpr()), int2bv(MaxBvLen, rhs.getExpr())), true);
|
|
294
290
|
}
|
|
295
291
|
}
|
|
296
292
|
|
|
297
293
|
friend BoundedZ3Expr lshr(const BoundedZ3Expr &lhs, const BoundedZ3Expr &rhs)
|
|
298
294
|
{
|
|
299
|
-
|
|
300
|
-
return bv2int(lshr(int2bv(maxBvLen, lhs.getExpr()), int2bv(maxBvLen, rhs.getExpr())), true);
|
|
295
|
+
return bv2int(lshr(int2bv(MaxBvLen, lhs.getExpr()), int2bv(MaxBvLen, rhs.getExpr())), true);
|
|
301
296
|
}
|
|
302
297
|
|
|
303
298
|
friend BoundedZ3Expr int2bv(u32_t n, const BoundedZ3Expr &e)
|
|
@@ -394,3 +389,4 @@ struct std::hash<SVF::BoundedZ3Expr>
|
|
|
394
389
|
}
|
|
395
390
|
};
|
|
396
391
|
#endif //SVF_BOUNDEDZ3EXPR_H
|
|
392
|
+
|
|
@@ -373,6 +373,18 @@ public:
|
|
|
373
373
|
bugSet.insert(newBug);
|
|
374
374
|
break;
|
|
375
375
|
}
|
|
376
|
+
case GenericBug::FULLNULLPTRDEREFERENCE:
|
|
377
|
+
{
|
|
378
|
+
newBug = new FullNullPtrDereferenceBug(eventStack);
|
|
379
|
+
bugSet.insert(newBug);
|
|
380
|
+
break;
|
|
381
|
+
}
|
|
382
|
+
case GenericBug::PARTIALNULLPTRDEREFERENCE:
|
|
383
|
+
{
|
|
384
|
+
newBug = new PartialNullPtrDereferenceBug(eventStack);
|
|
385
|
+
bugSet.insert(newBug);
|
|
386
|
+
break;
|
|
387
|
+
}
|
|
376
388
|
default:
|
|
377
389
|
{
|
|
378
390
|
assert(false && "Abstract Execution does NOT hava his bug type!");
|