File tree Expand file tree Collapse file tree 5 files changed +29
-0
lines changed
test/library-tests/frameworks/action_view Expand file tree Collapse file tree 5 files changed +29
-0
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ category : minorAnalysis
3+ ---
4+ * Uses of ` ActionView::FileSystemResolver ` are now recognized as filesystem accesses.
Original file line number Diff line number Diff line change 33 */
44
55private import codeql.ruby.AST
6+ private import codeql.ruby.ApiGraphs
67private import codeql.ruby.Concepts
78private import codeql.ruby.controlflow.CfgNodes
89private import codeql.ruby.DataFlow
@@ -204,4 +205,15 @@ class LinkToCall extends ActionViewContextCall {
204205 not exists ( this .getBlock ( ) ) and result = this .getArgument ( 1 )
205206 }
206207}
208+
209+ /**
210+ * An instantiation of `ActionView::FileSystemResolver`, considered as a `FileSystemAccess`.
211+ */
212+ class FileSystemResolverAccess extends DataFlow:: CallNode , FileSystemAccess:: Range {
213+ FileSystemResolverAccess ( ) {
214+ this = API:: getTopLevelMember ( "ActionView" ) .getMember ( "FileSystemResolver" ) .getAnInstantiation ( )
215+ }
216+
217+ override DataFlow:: Node getAPathArgument ( ) { result = this .getArgument ( 0 ) }
218+ }
207219// TODO: model flow in/out of template files properly,
Original file line number Diff line number Diff line change 1+ | ActionView.rb:5:39:5:92 | call to new | ActionView.rb:5:74:5:82 | view_path |
Original file line number Diff line number Diff line change 1+ import codeql.ruby.Concepts
2+ import codeql.ruby.DataFlow
3+
4+ query predicate fileSystemResolverAccesses ( FileSystemAccess a , DataFlow:: Node path ) {
5+ a .getAPathArgument ( ) = path
6+ }
Original file line number Diff line number Diff line change 1+
2+ def setup_view_paths
3+ view_path = Rails . root . join ( "/path/to/views" )
4+ pattern = ":prefix/:action{.:formats,}"
5+ ActionController ::Base . view_paths = ActionView ::FileSystemResolver . new ( view_path , pattern )
6+ end
You can’t perform that action at this time.
0 commit comments