Skip to content

Commit bc55117

Browse files
committed
Python: model copy.deepcopy as a value step
1 parent 501cda4 commit bc55117

File tree

2 files changed

+2
-14
lines changed

2 files changed

+2
-14
lines changed

python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ private module Cached {
4646
or
4747
containerStep(nodeFrom, nodeTo)
4848
or
49-
copyStep(nodeFrom, nodeTo)
50-
or
5149
DataFlowPrivate::forReadStep(nodeFrom, _, nodeTo)
5250
or
5351
DataFlowPrivate::iterableUnpackingReadStep(nodeFrom, _, nodeTo)
@@ -191,18 +189,6 @@ predicate containerStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) {
191189
DataFlowPrivate::comprehensionStoreStep(nodeFrom, _, nodeTo)
192190
}
193191

194-
/**
195-
* Holds if taint can flow from `nodeFrom` to `nodeTo` with a step related to copying.
196-
*/
197-
predicate copyStep(DataFlow::CfgNode nodeFrom, DataFlow::CfgNode nodeTo) {
198-
exists(DataFlow::CallCfgNode call | call = nodeTo |
199-
call = API::moduleImport("copy").getMember(["copy", "deepcopy"]).getACall() and
200-
call.getArg(0) = nodeFrom
201-
)
202-
or
203-
nodeTo.(DataFlow::MethodCallNode).calls(nodeFrom, "copy")
204-
}
205-
206192
/**
207193
* Holds if taint can flow from `nodeFrom` to `nodeTo` with an `await`-step,
208194
* such that the whole expression `await x` is tainted if `x` is tainted.

python/ql/lib/semmle/python/frameworks/Stdlib/StdLib.model.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ extensions:
1313
pack: codeql/python-all
1414
extensible: summaryModel
1515
data:
16+
# See https://docs.python.org/3/library/copy.html#copy.deepcopy
17+
- ["copy", "Member[copy,deepcopy]", "Argument[0,x:]", "ReturnValue", "value"]
1618
# See See https://docs.python.org/3/library/fnmatch.html#fnmatch.filter
1719
- ["fnmatch", "Member[filter]", "Argument[0,names:].ListElement", "ReturnValue.ListElement", "value"]
1820
- ["fnmatch", "Member[filter]", "Argument[0,names:]", "ReturnValue", "taint"]

0 commit comments

Comments
 (0)