Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit af6c5cc

Browse files
committed
Python: Enable auto-model BaseHttpRequestHandler
1 parent ba19f95 commit af6c5cc

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2014,7 +2014,7 @@ module StdlibPrivate {
20142014
* - https://docs.python.org/3.9/library/http.server.html#http.server.BaseHTTPRequestHandler
20152015
* - https://docs.python.org/2.7/library/basehttpserver.html#BaseHTTPServer.BaseHTTPRequestHandler
20162016
*/
2017-
private module HttpRequestHandler {
2017+
module BaseHttpRequestHandler {
20182018
/** Gets a reference to the `BaseHttpRequestHandler` class or any subclass. */
20192019
API::Node subclassRef() {
20202020
result =
@@ -2028,6 +2028,9 @@ module StdlibPrivate {
20282028
API::moduleImport("http").getMember("server").getMember("SimpleHTTPRequestHandler"),
20292029
API::moduleImport("http").getMember("server").getMember("CGIHTTPRequestHandler"),
20302030
].getASubclass*()
2031+
or
2032+
result =
2033+
ModelOutput::getATypeNode("http.server.BaseHTTPRequestHandler~Subclass").getASubclass*()
20312034
}
20322035

20332036
/** A HttpRequestHandler class definition (most likely in project code). */

python/ql/src/meta/ClassHierarchy/Find.ql

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,14 @@ class WSGIServer extends FindSubclassesSpec {
7575
}
7676
}
7777

78+
class StdlibBaseHttpRequestHandler extends FindSubclassesSpec {
79+
StdlibBaseHttpRequestHandler() { this = "http.server.BaseHTTPRequestHandler~Subclass" }
80+
81+
override API::Node getAlreadyModeledClass() {
82+
result = StdlibPrivate::BaseHttpRequestHandler::subclassRef()
83+
}
84+
}
85+
7886
bindingset[fullyQualified]
7987
predicate fullyQualifiedToYamlFormat(string fullyQualified, string type2, string path) {
8088
exists(int firstDot | firstDot = fullyQualified.indexOf(".", 0, 0) |

0 commit comments

Comments
 (0)