mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Convert post-update logic to IR (part 1)
This commit is contained in:
@@ -807,12 +807,18 @@ module Public {
|
||||
abstract Node getPreUpdateNode();
|
||||
}
|
||||
|
||||
predicate insnHasPostUpdateNode(IR::Instruction insn) {
|
||||
exists(Expr e | insn.(IR::EvalInstruction).getExpr() = e |
|
||||
e instanceof AddressExpr or
|
||||
e = any(AddressExpr ae).getOperand() or
|
||||
e = any(StarExpr ae).getBase() or
|
||||
e = any(DerefExpr ae).getOperand() or
|
||||
e = any(IR::EvalImplicitDerefInstruction eidi).getOperand()
|
||||
)
|
||||
}
|
||||
|
||||
predicate hasPostUpdateNode(Node preupd) {
|
||||
preupd instanceof AddressOperationNode
|
||||
or
|
||||
preupd = any(AddressOperationNode addr).getOperand()
|
||||
or
|
||||
preupd = any(PointerDereferenceNode deref).getOperand()
|
||||
insnHasPostUpdateNode(preupd.asInstruction())
|
||||
or
|
||||
preupd = getAWrittenNode()
|
||||
or
|
||||
|
||||
Reference in New Issue
Block a user