Merge pull request #15853 from hvitved/dataflow/get-location

Data flow: Replace `hasLocationInfo` with `getLocation`
This commit is contained in:
Tom Hvitved
2024-03-18 20:21:46 +01:00
committed by GitHub
96 changed files with 419 additions and 277 deletions

View File

@@ -5,7 +5,7 @@ private import codeql.ruby.dataflow.internal.DataFlowImplSpecific
private import codeql.ruby.dataflow.internal.TaintTrackingImplSpecific
private import codeql.dataflow.internal.DataFlowImplConsistency
private module Input implements InputSig<RubyDataFlow> {
private module Input implements InputSig<Location, RubyDataFlow> {
private import RubyDataFlow
predicate postWithInFlowExclude(Node n) { n instanceof FlowSummaryNode }
@@ -46,4 +46,4 @@ private module Input implements InputSig<RubyDataFlow> {
}
}
import MakeConsistency<RubyDataFlow, RubyTaintTracking, Input>
import MakeConsistency<Location, RubyDataFlow, RubyTaintTracking, Input>

View File

@@ -12,6 +12,6 @@ import codeql.Locations
module DataFlow {
private import codeql.ruby.dataflow.internal.DataFlowImplSpecific
private import codeql.dataflow.DataFlow
import DataFlowMake<RubyDataFlow>
import DataFlowMake<Location, RubyDataFlow>
import codeql.ruby.dataflow.internal.DataFlowImpl1
}

View File

@@ -7,6 +7,7 @@ module TaintTracking {
private import codeql.ruby.dataflow.internal.DataFlowImplSpecific
private import codeql.ruby.dataflow.internal.TaintTrackingImplSpecific
private import codeql.dataflow.TaintTracking
import TaintFlowMake<RubyDataFlow, RubyTaintTracking>
private import codeql.Locations
import TaintFlowMake<Location, RubyDataFlow, RubyTaintTracking>
import codeql.ruby.dataflow.internal.tainttracking1.TaintTrackingImpl
}

View File

@@ -1,3 +1,4 @@
private import codeql.Locations
private import DataFlowImplSpecific
private import codeql.dataflow.internal.DataFlowImpl
import MakeImpl<RubyDataFlow>
import MakeImpl<Location, RubyDataFlow>

View File

@@ -1,3 +1,4 @@
private import codeql.Locations
private import DataFlowImplSpecific
private import codeql.dataflow.internal.DataFlowImplCommon
import MakeImplCommon<RubyDataFlow>
import MakeImplCommon<Location, RubyDataFlow>

View File

@@ -2,6 +2,7 @@
* Provides Ruby-specific definitions for use in the data flow library.
*/
private import codeql.Locations
private import codeql.dataflow.DataFlow
module Private {
@@ -13,7 +14,7 @@ module Public {
import DataFlowPublic
}
module RubyDataFlow implements InputSig {
module RubyDataFlow implements InputSig<Location> {
import Private
import Public

View File

@@ -35,7 +35,7 @@ class Node extends TNode {
* For more information, see
* [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
*/
predicate hasLocationInfo(
deprecated predicate hasLocationInfo(
string filepath, int startline, int startcolumn, int endline, int endcolumn
) {
this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)

View File

@@ -9,7 +9,7 @@ private import codeql.ruby.dataflow.internal.DataFlowImplSpecific as DataFlowImp
private import DataFlowImplSpecific::Private
private import DataFlowImplSpecific::Public
module Input implements InputSig<DataFlowImplSpecific::RubyDataFlow> {
module Input implements InputSig<Location, DataFlowImplSpecific::RubyDataFlow> {
class SummarizedCallableBase = string;
ArgumentPosition callbackSelfParameterPosition() { result.isLambdaSelf() }
@@ -146,7 +146,7 @@ module Input implements InputSig<DataFlowImplSpecific::RubyDataFlow> {
}
}
private import Make<DataFlowImplSpecific::RubyDataFlow, Input> as Impl
private import Make<Location, DataFlowImplSpecific::RubyDataFlow, Input> as Impl
private module StepsInput implements Impl::Private::StepsInputSig {
DataFlowCall getACall(Public::SummarizedCallable sc) {

View File

@@ -2,9 +2,10 @@
* Provides Ruby-specific definitions for use in the taint tracking library.
*/
private import codeql.Locations
private import codeql.dataflow.TaintTracking
private import DataFlowImplSpecific
module RubyTaintTracking implements InputSig<RubyDataFlow> {
module RubyTaintTracking implements InputSig<Location, RubyDataFlow> {
import TaintTrackingPrivate
}

View File

@@ -4,12 +4,13 @@
*/
import ruby
private import codeql.Locations
private import codeql.dataflow.test.InlineFlowTest
private import codeql.ruby.dataflow.internal.DataFlowImplSpecific
private import codeql.ruby.dataflow.internal.TaintTrackingImplSpecific
private import internal.InlineExpectationsTestImpl
private module FlowTestImpl implements InputSig<RubyDataFlow> {
private module FlowTestImpl implements InputSig<Location, RubyDataFlow> {
import TestUtilities.InlineFlowTestUtil
bindingset[src, sink]
@@ -19,4 +20,4 @@ private module FlowTestImpl implements InputSig<RubyDataFlow> {
}
}
import InlineFlowTestMake<RubyDataFlow, RubyTaintTracking, Impl, FlowTestImpl>
import InlineFlowTestMake<Location, RubyDataFlow, RubyTaintTracking, Impl, FlowTestImpl>