diff --git a/python/ql/lib/semmle/python/frameworks/Django.qll b/python/ql/lib/semmle/python/frameworks/Django.qll index bd84c781d5d..990eaffddfd 100644 --- a/python/ql/lib/semmle/python/frameworks/Django.qll +++ b/python/ql/lib/semmle/python/frameworks/Django.qll @@ -838,6 +838,10 @@ module PrivateDjango { or // Commonly used alias result = models().getMember("RawSQL") + or + result = + ModelOutput::getATypeNode("django.db.models.expressions.RawSQL~Subclass") + .getASubclass*() } /** @@ -1172,6 +1176,9 @@ module PrivateDjango { or // handle django.http.HttpRequest alias result = http().getMember("HttpRequest") + or + result = + ModelOutput::getATypeNode("django.http.request.HttpRequest~Subclass").getASubclass*() } /** @@ -1475,7 +1482,7 @@ module PrivateDjango { API::Node classRef() { result = baseClassRef().getASubclass*() or result = - ModelOutput::getATypeNode("Django.http.response.HttpResponsePermanentRedirect~Subclass") + ModelOutput::getATypeNode("django.http.response.HttpResponsePermanentRedirect~Subclass") .getASubclass*() } diff --git a/python/ql/src/meta/ClassHierarchy/Find.ql b/python/ql/src/meta/ClassHierarchy/Find.ql index cfffa549ace..b5eb27d6e6b 100644 --- a/python/ql/src/meta/ClassHierarchy/Find.ql +++ b/python/ql/src/meta/ClassHierarchy/Find.ql @@ -259,6 +259,22 @@ class FabricConnection extends FindSubclassesSpec { } } +class DjangoRawSql extends FindSubclassesSpec { + DjangoRawSql() { this = "django.db.models.expressions.RawSQL~Subclass" } + + override API::Node getAlreadyModeledClass() { + result = PrivateDjango::DjangoImpl::DB::Models::Expressions::RawSql::classRef() + } +} + +class DjangoHttpRequest extends FindSubclassesSpec { + DjangoHttpRequest() { this = "django.http.request.HttpRequest~Subclass" } + + override API::Node getAlreadyModeledClass() { + result = PrivateDjango::DjangoImpl::DjangoHttp::Request::HttpRequest::classRef() + } +} + bindingset[fullyQualified] predicate fullyQualifiedToYamlFormat(string fullyQualified, string type2, string path) { exists(int firstDot | firstDot = fullyQualified.indexOf(".", 0, 0) |