ControlFlowNode
/*** @name Modification of dictionary returned by locals()* @description Modifications of the dictionary returned by locals() are not propagated to the local variables of a function.* @kind problem* @tags quality* reliability* correctness* @problem.severity warning* @sub-severity low* @precision very-high* @id py/modification-of-locals*/import pythonprivate import LegacyPointsTopredicate originIsLocals(ControlFlowNodeWithPointsTo n) {n.pointsTo(_, _, Value::named("locals").getACall())}predicate modification_of_locals(ControlFlowNode f) {originIsLocals(f.(SubscriptNode).getObject()) and(f.isStore() or f.isDelete())orexists(string mname, AttrNode attr |attr = f.(CallNode).getFunction() andoriginIsLocals(attr.getObject(mname))|mname in ["pop", "popitem", "update", "clear"])}from AstNode a, ControlFlowNode fwheremodification_of_locals(f) anda = f.getNode() and// in module level scope `locals() == globals()`// see https://docs.python.org/3/library/functions.html#locals// FP report in https://github.com/github/codeql/issues/6674not a.getScope() instanceof ModuleScopeselect a, "Modification of the locals() dictionary will have no effect on the local variables."
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。