Skip to content

Commit 13c9d60

Browse files
committed
Python: fix sub class test
1 parent 588cb7b commit 13c9d60

2 files changed

Lines changed: 13 additions & 6 deletions

File tree

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,21 @@ module Flask {
7171
* See https://flask.palletsprojects.com/en/1.1.x/api/#flask.Flask.
7272
*/
7373
module FlaskApp {
74-
/** Gets a reference to the `flask.Flask` class. */
75-
API::Node classRef() {
76-
result = API::moduleImport("flask").getMember("Flask") or
74+
/**
75+
* Gets a reference to the `flask.Flask` class or any subclass.
76+
*
77+
* Deprecated: Use `subclassRef()` instead, this predicate always returned some subclasses.
78+
*/
79+
deprecated API::Node classRef() { result = subclassRef() }
80+
81+
/** Gets a reference to the `flask.Flask` class or any subclass. */
82+
API::Node subclassRef() {
83+
result = API::moduleImport("flask").getMember("Flask").getASubclass*() or
7784
result = ModelOutput::getATypeNode("flask.Flask~Subclass").getASubclass*()
7885
}
7986

8087
/** Gets a reference to an instance of `flask.Flask` (a flask application). */
81-
API::Node instance() { result = classRef().getReturn() }
88+
API::Node instance() { result = subclassRef().getReturn() }
8289
}
8390

8491
/**
@@ -132,7 +139,7 @@ module Flask {
132139
API::Node classRef() {
133140
result = API::moduleImport("flask").getMember("Response")
134141
or
135-
result = [FlaskApp::classRef(), FlaskApp::instance()].getMember("response_class")
142+
result = [FlaskApp::subclassRef(), FlaskApp::instance()].getMember("response_class")
136143
or
137144
result = ModelOutput::getATypeNode("flask.Response~Subclass").getASubclass*()
138145
}

python/ql/test/library-tests/frameworks/flask/flask_subclass.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ def __init__(self, *args, **kwargs):
66
Flask.__init__(self, *args, **kwargs)
77

88

9-
app = Sub(__name__) # $ MISSING: instance
9+
app = Sub(__name__) # $ instance
1010

1111

1212
@app.route("/")

0 commit comments

Comments
 (0)