mirror of
https://github.com/github/codeql.git
synced 2025-12-18 09:43:15 +01:00
Python: Modernise Variables/MonkeyPatched.qll
This commit is contained in:
@@ -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())
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user