Skip to content

Commit fc7e753

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

File tree

1 file changed

+7
-13
lines changed

1 file changed

+7
-13
lines changed

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

Lines changed: 7 additions & 13 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 `HTTParty`.
@@ -57,26 +56,21 @@ class HttpartyRequest extends Http::Client::Request::Range, DataFlow::CallNode {
5756
override predicate disablesCertificateValidation(
5857
DataFlow::Node disablingNode, DataFlow::Node argumentOrigin
5958
) {
60-
any(HttpartyDisablesCertificateValidationConfiguration config)
61-
.hasFlow(argumentOrigin, disablingNode) and
59+
HttpartyDisablesCertificateValidationFlow::flow(argumentOrigin, disablingNode) and
6260
disablingNode = this.getCertificateValidationControllingValue()
6361
}
6462

6563
override string getFramework() { result = "HTTParty" }
6664
}
6765

6866
/** A configuration to track values that can disable certificate validation for Httparty. */
69-
private class HttpartyDisablesCertificateValidationConfiguration extends DataFlowImplForHttpClientLibraries::Configuration
70-
{
71-
HttpartyDisablesCertificateValidationConfiguration() {
72-
this = "HttpartyDisablesCertificateValidationConfiguration"
73-
}
74-
75-
override predicate isSource(DataFlow::Node source) {
76-
source.asExpr().getExpr().(BooleanLiteral).isFalse()
77-
}
67+
private module HttpartyDisablesCertificateValidationConfig implements DataFlow::ConfigSig {
68+
predicate isSource(DataFlow::Node source) { source.asExpr().getExpr().(BooleanLiteral).isFalse() }
7869

79-
override predicate isSink(DataFlow::Node sink) {
70+
predicate isSink(DataFlow::Node sink) {
8071
sink = any(HttpartyRequest req).getCertificateValidationControllingValue()
8172
}
8273
}
74+
75+
private module HttpartyDisablesCertificateValidationFlow =
76+
DataFlow::Global<HttpartyDisablesCertificateValidationConfig>;

0 commit comments

Comments
 (0)