Skip to content

Commit 92941a4

Browse files
committed
Ruby: use new dataflow api in HttpClient.qll
1 parent 1ffcf4b commit 92941a4

File tree

1 file changed

+7
-11
lines changed

1 file changed

+7
-11
lines changed

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

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

1110
/**
1211
* A call that makes an HTTP request using `HTTPClient`.
@@ -65,26 +64,23 @@ class HttpClientRequest extends Http::Client::Request::Range, DataFlow::CallNode
6564
override predicate disablesCertificateValidation(
6665
DataFlow::Node disablingNode, DataFlow::Node argumentOrigin
6766
) {
68-
any(HttpClientDisablesCertificateValidationConfiguration config)
69-
.hasFlow(argumentOrigin, disablingNode) and
67+
HttpClientDisablesCertificateValidationFlow::flow(argumentOrigin, disablingNode) and
7068
disablingNode = this.getCertificateValidationControllingValue()
7169
}
7270

7371
override string getFramework() { result = "HTTPClient" }
7472
}
7573

7674
/** A configuration to track values that can disable certificate validation for HttpClient. */
77-
private class HttpClientDisablesCertificateValidationConfiguration extends DataFlowImplForHttpClientLibraries::Configuration
78-
{
79-
HttpClientDisablesCertificateValidationConfiguration() {
80-
this = "HttpClientDisablesCertificateValidationConfiguration"
81-
}
82-
83-
override predicate isSource(DataFlow::Node source) {
75+
private module HttpClientDisablesCertificateValidationConfig implements DataFlow::ConfigSig {
76+
predicate isSource(DataFlow::Node source) {
8477
source = API::getTopLevelMember("OpenSSL").getMember("SSL").getMember("VERIFY_NONE").asSource()
8578
}
8679

87-
override predicate isSink(DataFlow::Node sink) {
80+
predicate isSink(DataFlow::Node sink) {
8881
sink = any(HttpClientRequest req).getCertificateValidationControllingValue()
8982
}
9083
}
84+
85+
private module HttpClientDisablesCertificateValidationFlow =
86+
DataFlow::Global<HttpClientDisablesCertificateValidationConfig>;

0 commit comments

Comments
 (0)