Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 76bd331

Browse files
Create Zip.qll
1 parent abe25da commit 76bd331

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

  • python/ql/src/experimental/semmle/python/frameworks
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
private import python
2+
private import experimental.semmle.python.Concepts
3+
private import semmle.python.dataflow.new.DataFlow
4+
private import semmle.python.ApiGraphs
5+
6+
7+
private module Zip {
8+
private API::Node shutil() { result = API::moduleImport("shutil") }
9+
10+
private class CopyFiles extends DataFlow::CallCfgNode, OpenFile::Range {
11+
CopyFiles() { this = shutil().getMember(["copyfile", "copy", "copy2", "copytree", "move"]).getACall() }
12+
override DataFlow::Node getAPathArgument() { result in [this.getArg(0), this.getArgByName("src"), this.getArg(1), this.getArgByName("dst")] }
13+
}
14+
15+
private class CopyFileobj extends DataFlow::CallCfgNode, OpenFile::Range {
16+
CopyFileobj() { this = shutil().getMember("copyfileobj").getACall() }
17+
override DataFlow::Node getAPathArgument() { result in [this.getArg(0), this.getArgByName("fsrc"), this.getArg(1), this.getArgByName("fdst")] }
18+
}
19+
20+
private class OpenZipFile extends DataFlow::CallCfgNode, ZipFile::Range {
21+
OpenZipFile() {
22+
this = API::moduleImport("zipfile").getMember("ZipFile").getMember("open").getACall() or
23+
this = API::moduleImport("zipfile").getMember("ZipFile").getACall()
24+
}
25+
override DataFlow::Node getAnInput() { result = this.getArg(0) }
26+
}
27+
}
28+

0 commit comments

Comments
 (0)