This commit is contained in:
Geoffrey White 2023-10-05 18:53:30 +01:00
Родитель 81d4ec1e98
Коммит 66637e8c03
1 изменённых файлов: 6 добавлений и 2 удалений

Просмотреть файл

@ -31,8 +31,12 @@ predicate defaultImplicitTaintRead(DataFlow::Node node, DataFlow::ContentSet cs)
// So when the node is a `PostUpdateNode` we allow any sequence of implicit read steps of an appropriate
// type to make sure we arrive at the sink with an empty access path.
exists(NominalTypeDecl d, Decl cx |
pragma[only_bind_out](node).(DataFlow::PostUpdateNode).getPreUpdateNode().asExpr().getType().getUnderlyingType() =
d.getType().getABaseType*() and
pragma[only_bind_out](node)
.(DataFlow::PostUpdateNode)
.getPreUpdateNode()
.asExpr()
.getType()
.getUnderlyingType() = d.getType().getABaseType*() and
cx.asNominalTypeDecl() = d and
cs.getAReadContent().(DataFlow::Content::FieldContent).getField() = cx.getAMember()
)