Skip to content

Commit 2aaded8

Browse files
committed
BackwardsInfoflowProblem: Do not propagate taint on cast incompatible arrays
1 parent eac063d commit 2aaded8

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

soot-infoflow/src/soot/jimple/infoflow/problems/BackwardsInfoflowProblem.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,17 @@ else if (aliasing.mayAlias(leftVal, sourceBase)) {
371371

372372
AccessPath newAp = manager.getAccessPathFactory().copyWithNewValue(ap, rightVal,
373373
rightType, cutFirstField);
374+
if (rightOp instanceof CastExpr) {
375+
Type castObjType = newAp.getBaseType();
376+
Type castToType = rightOp.getType();
377+
if (castObjType instanceof ArrayType && castToType instanceof ArrayType) {
378+
ArrayType acastObjType = (ArrayType) castObjType;
379+
ArrayType acastToType = (ArrayType) castToType;
380+
if (acastObjType.numDimensions != acastToType.numDimensions)
381+
// Cast incompatible
382+
continue;
383+
}
384+
}
374385
Abstraction newAbs = source.deriveNewAbstraction(newAp, assignStmt);
375386
if (newAbs != null) {
376387
if (rightVal instanceof StaticFieldRef && manager.getConfig()

0 commit comments

Comments
 (0)