Skip to content

Commit 228e9e9

Browse files
committed
Python: Minor flask refactor
1 parent 6648a69 commit 228e9e9

File tree

1 file changed

+12
-5
lines changed
  • python/ql/lib/semmle/python/frameworks

1 file changed

+12
-5
lines changed

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -525,13 +525,20 @@ module Flask {
525525
*
526526
* See https://flask.palletsprojects.com/en/1.1.x/api/#flask.send_from_directory
527527
*/
528-
class FlaskSendFromDirectory extends FileSystemAccess::Range, DataFlow::CallCfgNode {
529-
FlaskSendFromDirectory() {
528+
private class FlaskSendFromDirectoryCall extends FileSystemAccess::Range, DataFlow::CallCfgNode {
529+
FlaskSendFromDirectoryCall() {
530530
this = API::moduleImport("flask").getMember("send_from_directory").getACall()
531531
}
532532

533533
override DataFlow::Node getAPathArgument() {
534-
result in [this.getArg(_), this.getArgByName(["directory", "filename"])]
534+
result in [
535+
this.getArg(0), this.getArgByName("directory"),
536+
// as described in the docs, the `filename` argument is restrained to be within
537+
// the provided directory, so is not exposed to path-injection. (but is still a
538+
// path-argument).
539+
this.getArg(1), this.getArgByName("filename")
540+
// TODO: Exclude filename as path-injection sink
541+
]
535542
}
536543
}
537544

@@ -540,8 +547,8 @@ module Flask {
540547
*
541548
* See https://flask.palletsprojects.com/en/1.1.x/api/#flask.send_file
542549
*/
543-
class FlaskSendFile extends FileSystemAccess::Range, DataFlow::CallCfgNode {
544-
FlaskSendFile() { this = API::moduleImport("flask").getMember("send_file").getACall() }
550+
private class FlaskSendFileCall extends FileSystemAccess::Range, DataFlow::CallCfgNode {
551+
FlaskSendFileCall() { this = API::moduleImport("flask").getMember("send_file").getACall() }
545552

546553
override DataFlow::Node getAPathArgument() {
547554
result in [this.getArg(0), this.getArgByName("filename_or_fp")]

0 commit comments

Comments
 (0)