Skip to content

Commit 794d04e

Browse files
committed
Python: Model os.getenv[b]
1 parent 6e168ff commit 794d04e

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

python/ql/lib/semmle/python/frameworks/Stdlib.qll

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4372,6 +4372,30 @@ private module StdlibPrivate {
43724372
preservesValue = false
43734373
}
43744374
}
4375+
4376+
/**
4377+
* A flow summary for `os.getenv` / `os.getenvb`
4378+
*
4379+
* See https://devdocs.io/python~3.11/library/os#os.getenv
4380+
*/
4381+
class OsGetEnv extends SummarizedCallable {
4382+
OsGetEnv() { this = "os.getenv" }
4383+
4384+
override DataFlow::CallCfgNode getACall() {
4385+
result = API::moduleImport("os").getMember(["getenv", "getenvb"]).getACall()
4386+
}
4387+
4388+
override DataFlow::ArgumentNode getACallback() {
4389+
result =
4390+
API::moduleImport("os").getMember(["getenv", "getenvb"]).getAValueReachableFromSource()
4391+
}
4392+
4393+
override predicate propagatesFlowExt(string input, string output, boolean preservesValue) {
4394+
input in ["Argument[1]", "Argument[default:]"] and
4395+
output = "ReturnValue" and
4396+
preservesValue = true
4397+
}
4398+
}
43754399
}
43764400

43774401
// ---------------------------------------------------------------------------

0 commit comments

Comments
 (0)