Skip to content

Commit a64d372

Browse files
committed
Ruby: use new dataflow api in Typhoeus.qll
1 parent 699f752 commit a64d372

File tree

1 file changed

+7
-13
lines changed

1 file changed

+7
-13
lines changed

ruby/ql/lib/codeql/ruby/frameworks/http_clients/Typhoeus.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 `Typhoeus`.
@@ -38,26 +37,21 @@ class TyphoeusHttpRequest extends Http::Client::Request::Range, DataFlow::CallNo
3837
override predicate disablesCertificateValidation(
3938
DataFlow::Node disablingNode, DataFlow::Node argumentOrigin
4039
) {
41-
any(TyphoeusDisablesCertificateValidationConfiguration config)
42-
.hasFlow(argumentOrigin, disablingNode) and
40+
TyphoeusDisablesCertificateValidationFlow::flow(argumentOrigin, disablingNode) and
4341
disablingNode = this.getCertificateValidationControllingValue()
4442
}
4543

4644
override string getFramework() { result = "Typhoeus" }
4745
}
4846

4947
/** A configuration to track values that can disable certificate validation for Typhoeus. */
50-
private class TyphoeusDisablesCertificateValidationConfiguration extends DataFlowImplForHttpClientLibraries::Configuration
51-
{
52-
TyphoeusDisablesCertificateValidationConfiguration() {
53-
this = "TyphoeusDisablesCertificateValidationConfiguration"
54-
}
55-
56-
override predicate isSource(DataFlow::Node source) {
57-
source.asExpr().getExpr().(BooleanLiteral).isFalse()
58-
}
48+
private module TyphoeusDisablesCertificateValidationConfig implements DataFlow::ConfigSig {
49+
predicate isSource(DataFlow::Node source) { source.asExpr().getExpr().(BooleanLiteral).isFalse() }
5950

60-
override predicate isSink(DataFlow::Node sink) {
51+
predicate isSink(DataFlow::Node sink) {
6152
sink = any(TyphoeusHttpRequest req).getCertificateValidationControllingValue()
6253
}
6354
}
55+
56+
private module TyphoeusDisablesCertificateValidationFlow =
57+
DataFlow::Global<TyphoeusDisablesCertificateValidationConfig>;

0 commit comments

Comments
 (0)