mirror of
https://github.com/github/codeql.git
synced 2026-05-02 04:05:14 +02:00
Python: Model posixpath, ntpath, and genericpath modules
This commit is contained in:
2
python/change-notes/2021-11-16-posixpath.md
Normal file
2
python/change-notes/2021-11-16-posixpath.md
Normal file
@@ -0,0 +1,2 @@
|
||||
lgtm,codescanning
|
||||
* Added modeling of the `posixpath`, `ntpath`, and `genericpath` modules for path operations (although these are not supposed to be used), resulting in new sinks for the _Uncontrolled data used in path expression_ (`py/path-injection`) query.
|
||||
@@ -254,7 +254,17 @@ private module StdlibPrivate {
|
||||
/** Provides models for the `os` module. */
|
||||
module os {
|
||||
/** Gets a reference to the `os.path` module. */
|
||||
API::Node path() { result = os().getMember("path") }
|
||||
API::Node path() {
|
||||
result = os().getMember("path")
|
||||
or
|
||||
// although the following modules should not be used directly, they certainly can.
|
||||
// Each one doesn't expose the full `os.path` API, so this is an overapproximation
|
||||
// that made implementation easy. See
|
||||
// - https://github.com/python/cpython/blob/b567b9d74bd9e476a3027335873bb0508d6e450f/Lib/posixpath.py#L31-L38
|
||||
// - https://github.com/python/cpython/blob/b567b9d74bd9e476a3027335873bb0508d6e450f/Lib/ntpath.py#L26-L32
|
||||
// - https://github.com/python/cpython/blob/b567b9d74bd9e476a3027335873bb0508d6e450f/Lib/genericpath.py#L9-L11
|
||||
result = API::moduleImport(["posixpath", "ntpath", "genericpath"])
|
||||
}
|
||||
|
||||
/** Provides models for the `os.path` module */
|
||||
module path {
|
||||
|
||||
@@ -34,3 +34,11 @@ path.isfile("filepath") # $ getAPathArgument="filepath"
|
||||
path.isdir("filepath") # $ getAPathArgument="filepath"
|
||||
path.islink("filepath") # $ getAPathArgument="filepath"
|
||||
path.ismount("filepath") # $ getAPathArgument="filepath"
|
||||
|
||||
import posixpath
|
||||
import ntpath
|
||||
import genericpath
|
||||
|
||||
posixpath.exists("filepath") # $ getAPathArgument="filepath"
|
||||
ntpath.exists("filepath") # $ getAPathArgument="filepath"
|
||||
genericpath.exists("filepath") # $ getAPathArgument="filepath"
|
||||
|
||||
Reference in New Issue
Block a user