mirror of
https://github.com/github/codeql.git
synced 2026-02-14 22:21:06 +01:00
Moves the existing points-to predicates to the newly added class `ControlFlowNodeWithPointsTo` which resides in the `LegacyPointsTo` module. (Existing code that uses these predicates should import this module, and references to `ControlFlowNode` should be changed to `ControlFlowNodeWithPointsTo`.) Also updates all existing points-to based code to do just this.
22 lines
630 B
Plaintext
22 lines
630 B
Plaintext
import python
|
|
private import LegacyPointsTo
|
|
|
|
from ClassValue cls, string res
|
|
where
|
|
exists(CallNode call |
|
|
call.getFunction().(NameNode).getId() = "test" and
|
|
call.getAnArg().(ControlFlowNodeWithPointsTo).pointsTo(cls)
|
|
) and
|
|
(
|
|
cls.isSequence() and
|
|
cls.isMapping() and
|
|
res = "IS BOTH. SHOULD NOT HAPPEN. THEY ARE MUTUALLY EXCLUSIVE."
|
|
or
|
|
cls.isSequence() and not cls.isMapping() and res = "sequence"
|
|
or
|
|
not cls.isSequence() and cls.isMapping() and res = "mapping"
|
|
or
|
|
not cls.isSequence() and not cls.isMapping() and res = "neither sequence nor mapping"
|
|
)
|
|
select res, cls.toString()
|