Skip to content

Commit 699f752

Browse files
committed
Ruby: use new dataflow api in RestClient.qll
1 parent 25203d9 commit 699f752

File tree

1 file changed

+7
-11
lines changed

1 file changed

+7
-11
lines changed

ruby/ql/lib/codeql/ruby/frameworks/http_clients/RestClient.qll

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ private import codeql.ruby.CFG
77
private import codeql.ruby.Concepts
88
private import codeql.ruby.ApiGraphs
99
private import codeql.ruby.DataFlow
10-
private import codeql.ruby.dataflow.internal.DataFlowImplForHttpClientLibraries as DataFlowImplForHttpClientLibraries
1110

1211
/**
1312
* A call that makes an HTTP request using `RestClient`.
@@ -58,26 +57,23 @@ class RestClientHttpRequest extends Http::Client::Request::Range, DataFlow::Call
5857
override predicate disablesCertificateValidation(
5958
DataFlow::Node disablingNode, DataFlow::Node argumentOrigin
6059
) {
61-
any(RestClientDisablesCertificateValidationConfiguration config)
62-
.hasFlow(argumentOrigin, disablingNode) and
60+
RestClientDisablesCertificateValidationFlow::flow(argumentOrigin, disablingNode) and
6361
disablingNode = this.getCertificateValidationControllingValue()
6462
}
6563

6664
override string getFramework() { result = "RestClient" }
6765
}
6866

6967
/** A configuration to track values that can disable certificate validation for RestClient. */
70-
private class RestClientDisablesCertificateValidationConfiguration extends DataFlowImplForHttpClientLibraries::Configuration
71-
{
72-
RestClientDisablesCertificateValidationConfiguration() {
73-
this = "RestClientDisablesCertificateValidationConfiguration"
74-
}
75-
76-
override predicate isSource(DataFlow::Node source) {
68+
private module RestClientDisablesCertificateValidationConfig implements DataFlow::ConfigSig {
69+
predicate isSource(DataFlow::Node source) {
7770
source = API::getTopLevelMember("OpenSSL").getMember("SSL").getMember("VERIFY_NONE").asSource()
7871
}
7972

80-
override predicate isSink(DataFlow::Node sink) {
73+
predicate isSink(DataFlow::Node sink) {
8174
sink = any(RestClientHttpRequest req).getCertificateValidationControllingValue()
8275
}
8376
}
77+
78+
private module RestClientDisablesCertificateValidationFlow =
79+
DataFlow::Global<RestClientDisablesCertificateValidationConfig>;

0 commit comments

Comments
 (0)