Ruby: Recognise ActionCable logger class

This commit is contained in:
Harry Maclean
2022-06-16 13:40:02 +12:00
parent 4ecd595b73
commit 0ce14fc4e5
5 changed files with 36 additions and 0 deletions

View File

@@ -3,6 +3,7 @@
*/
private import codeql.ruby.frameworks.Core
private import codeql.ruby.frameworks.ActionCable
private import codeql.ruby.frameworks.ActionController
private import codeql.ruby.frameworks.ActiveRecord
private import codeql.ruby.frameworks.ActiveStorage

View File

@@ -0,0 +1,29 @@
/**
* Modeling for `ActionCable`, which is a websocket gem that ships with Rails.
* https://rubygems.org/gems/actioncable
*/
private import ruby
private import codeql.ruby.Concepts
private import codeql.ruby.ApiGraphs
private import codeql.ruby.frameworks.stdlib.Logger::Logger as StdlibLogger
/**
* Modeling for `ActionCable`.
*/
module ActionCable {
/**
* `ActionCable::Connection::TaggedLoggerProxy`
*/
module Logger {
private class ActionCableLoggerInstantiation extends StdlibLogger::LoggerInstantiation {
ActionCableLoggerInstantiation() {
this =
API::getTopLevelMember("ActionCable")
.getMember("Connection")
.getMember("TaggedLoggerProxy")
.getAnInstantiation()
}
}
}
}

View File

@@ -0,0 +1 @@
| action_cable.rb:1:1:1:54 | call to new |

View File

@@ -0,0 +1,4 @@
import codeql.ruby.frameworks.ActionCable
import codeql.ruby.frameworks.stdlib.Logger
query predicate loggerInstantiations(Logger::LoggerInstantiation l) { any() }

View File

@@ -0,0 +1 @@
ActionCable::Connection::TaggedLoggerProxy.new(logger)