diff --git a/python/ql/lib/semmle/python/frameworks/Multidict.qll b/python/ql/lib/semmle/python/frameworks/Multidict.qll index 06700e28347..d520757b76f 100644 --- a/python/ql/lib/semmle/python/frameworks/Multidict.qll +++ b/python/ql/lib/semmle/python/frameworks/Multidict.qll @@ -9,6 +9,7 @@ private import semmle.python.dataflow.new.TaintTracking private import semmle.python.Concepts private import semmle.python.ApiGraphs private import semmle.python.frameworks.internal.InstanceTaintStepsHelper +private import semmle.python.frameworks.data.ModelsAsData /** * INTERNAL: Do not use. @@ -28,6 +29,8 @@ module Multidict { /** Gets a reference to a `MultiDictProxy` class. */ API::Node classRef() { result = API::moduleImport("multidict").getMember(["MultiDictProxy", "CIMultiDictProxy"]) + or + result = ModelOutput::getATypeNode("multidict.MultiDictProxy~Subclass").getASubclass*() } /** diff --git a/python/ql/src/meta/ClassHierarchy/Find.ql b/python/ql/src/meta/ClassHierarchy/Find.ql index 9883a034cf8..173a111d7fb 100644 --- a/python/ql/src/meta/ClassHierarchy/Find.ql +++ b/python/ql/src/meta/ClassHierarchy/Find.ql @@ -21,6 +21,7 @@ private import semmle.python.frameworks.Fabric private import semmle.python.frameworks.Httpx private import semmle.python.frameworks.Invoke private import semmle.python.frameworks.MarkupSafe +private import semmle.python.frameworks.Multidict import semmle.python.frameworks.data.internal.ApiGraphModelsExtensions as Extensions class FlaskViewClasses extends FindSubclassesSpec { @@ -310,6 +311,12 @@ class MarkupSafe extends FindSubclassesSpec { override API::Node getAlreadyModeledClass() { result = MarkupSafeModel::Markup::classRef() } } +class Multidict extends FindSubclassesSpec { + Multidict() { this = "multidict.MultiDictProxy~Subclass" } + + override API::Node getAlreadyModeledClass() { result = Multidict::MultiDictProxy::classRef() } +} + bindingset[fullyQualified] predicate fullyQualifiedToYamlFormat(string fullyQualified, string type2, string path) { exists(int firstDot | firstDot = fullyQualified.indexOf(".", 0, 0) |