Python: Modernise Variables/MonkeyPatched.qll

This commit is contained in:
Rasmus Wriedt Larsen
2019-12-17 17:29:32 +01:00
parent 994ad197c4
commit 25ab0ed20f

View File

@@ -1,25 +1,24 @@
import python
predicate monkey_patched_builtin(string name) {
exists(AttrNode attr, SubscriptNode subscr, StrConst s |
exists(AttrNode attr, SubscriptNode subscr, StrConst s |
subscr.isStore() and
subscr.getIndex().getNode() = s and
s.getText() = name and
subscr.getValue() = attr and
attr.getObject("__dict__").refersTo(theBuiltinModuleObject())
attr.getObject("__dict__").pointsTo(Module::builtinModule())
)
or
exists(CallNode call, ControlFlowNode bltn, StrConst s |
exists(CallNode call, ControlFlowNode bltn, StrConst s |
call.getArg(0) = bltn and
bltn.refersTo(theBuiltinModuleObject()) and
bltn.pointsTo(Module::builtinModule()) and
call.getArg(1).getNode() = s and
s.getText() = name and
call.getFunction().refersTo(Object::builtin("setattr"))
call.getFunction().pointsTo(Value::named("setattr"))
)
or
exists(AttrNode attr |
exists(AttrNode attr |
attr.isStore() and
attr.getObject(name).refersTo(theBuiltinModuleObject())
attr.getObject(name).pointsTo(Module::builtinModule())
)
}