Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3c49447

Browse files
authored
Merge pull request #11325 from MathiasVP/fix-join-in-cast-array-pointer-query
C++: Fix join order in `cpp/upcast-array-pointer-arithmetic`
2 parents f1b85d7 + 1e14af6 commit 3c49447

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

cpp/ql/src/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,15 @@ predicate introducesNewField(Class derived, Class base) {
6464
)
6565
}
6666

67-
from DataFlow::PathNode source, DataFlow::PathNode sink, CastToPointerArithFlow cfg
67+
pragma[nomagic]
68+
predicate hasFullyConvertedType(DataFlow::PathNode node, Type t) {
69+
t = node.getNode().asExpr().getFullyConverted().getUnspecifiedType()
70+
}
71+
72+
from DataFlow::PathNode source, DataFlow::PathNode sink, CastToPointerArithFlow cfg, Type t
6873
where
69-
cfg.hasFlowPath(source, sink) and
70-
source.getNode().asExpr().getFullyConverted().getUnspecifiedType() =
71-
sink.getNode().asExpr().getFullyConverted().getUnspecifiedType()
74+
cfg.hasFlowPath(pragma[only_bind_into](source), pragma[only_bind_into](sink)) and
75+
hasFullyConvertedType(source, t) and
76+
hasFullyConvertedType(sink, t)
7277
select sink, source, sink, "This pointer arithmetic may be done with the wrong type because of $@.",
7378
source, "this cast"

0 commit comments

Comments
 (0)