From c2df81a83852780035df5c8a06d4dfb366834d5f Mon Sep 17 00:00:00 2001 From: Taus Date: Tue, 10 Oct 2023 14:38:06 +0000 Subject: [PATCH] Python: Add `logging.Logger` model --- python/ql/lib/semmle/python/frameworks/Stdlib.qll | 4 +++- python/ql/src/meta/ClassHierarchy/Find.ql | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/python/ql/lib/semmle/python/frameworks/Stdlib.qll b/python/ql/lib/semmle/python/frameworks/Stdlib.qll index cdec3b9f543..ae9e6c19685 100644 --- a/python/ql/lib/semmle/python/frameworks/Stdlib.qll +++ b/python/ql/lib/semmle/python/frameworks/Stdlib.qll @@ -255,8 +255,10 @@ module Stdlib { */ module Logger { /** Gets a reference to the `logging.Logger` class or any subclass. */ - private API::Node subclassRef() { + API::Node subclassRef() { result = API::moduleImport("logging").getMember("Logger").getASubclass*() + or + result = ModelOutput::getATypeNode("logging.Logger~Subclass").getASubclass*() } /** diff --git a/python/ql/src/meta/ClassHierarchy/Find.ql b/python/ql/src/meta/ClassHierarchy/Find.ql index 18d75440032..df378bdee51 100644 --- a/python/ql/src/meta/ClassHierarchy/Find.ql +++ b/python/ql/src/meta/ClassHierarchy/Find.ql @@ -404,6 +404,12 @@ class Urllib3PoolManager extends FindSubclassesSpec { override API::Node getAlreadyModeledClass() { result = Urllib3::PoolManager::classRef() } } +class StdlibLogger extends FindSubclassesSpec { + StdlibLogger() { this = "logging.Logger~Subclass" } + + override API::Node getAlreadyModeledClass() { result = Stdlib::Logger::subclassRef() } +} + bindingset[fullyQualified] predicate fullyQualifiedToYamlFormat(string fullyQualified, string type2, string path) { exists(int firstDot | firstDot = fullyQualified.indexOf(".", 0, 0) |