File tree Expand file tree Collapse file tree 2 files changed +16
-0
lines changed
src/semmle/python/frameworks
test/library-tests/frameworks/flask Expand file tree Collapse file tree 2 files changed +16
-0
lines changed Original file line number Diff line number Diff line change @@ -10,6 +10,7 @@ private import semmle.python.dataflow.new.DataFlow
10
10
private import semmle.python.dataflow.new.TaintTracking
11
11
private import semmle.python.ApiGraphs
12
12
private import semmle.python.frameworks.Stdlib
13
+ private import semmle.python.Concepts
13
14
14
15
/**
15
16
* Provides models for the `Werkzeug` PyPI package.
@@ -110,6 +111,15 @@ module Werkzeug {
110
111
private class FileStorageFileLikeInstances extends Stdlib:: FileLikeObject:: InstanceSource {
111
112
FileStorageFileLikeInstances ( ) { this .( DataFlow:: AttrRead ) .accesses ( instance ( ) , "stream" ) }
112
113
}
114
+
115
+ /** A call to the `save` method of a `FileStorage`. */
116
+ private class FileStorageSaveCall extends FileSystemAccess:: Range , DataFlow:: MethodCallNode {
117
+ FileStorageSaveCall ( ) { this .calls ( instance ( ) , "save" ) }
118
+
119
+ override DataFlow:: Node getAPathArgument ( ) {
120
+ result in [ this .getArg ( 0 ) , this .getArgByName ( "dst" ) ]
121
+ }
122
+ }
113
123
}
114
124
115
125
import WerkzeugOld
Original file line number Diff line number Diff line change
1
+ from flask import Flask , request
2
+ app = Flask (__name__ )
3
+
4
+ @app .route ("/save-uploaded-file" ) # $routeSetup="/save-uploaded-file"
5
+ def test_taint (): # $requestHandler
6
+ request .files ['key' ].save ("path" ) # $ getAPathArgument="path"
You can’t perform that action at this time.
0 commit comments