Skip to content

Commit 54c2221

Browse files
authored
Merge pull request github#14033 from hmac/excon-bugfix
Ruby: Fix bug in excon model
2 parents d146514 + d18ca3f commit 54c2221

File tree

2 files changed

+21
-4
lines changed
  • ruby/ql
    • lib/codeql/ruby/frameworks/http_clients
    • test/query-tests/security/cwe-295

2 files changed

+21
-4
lines changed

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,8 @@ class ExconHttpRequest extends Http::Client::Request::Range, DataFlow::CallNode
6464

6565
/** Gets the value that controls certificate validation, if any. */
6666
DataFlow::Node getCertificateValidationControllingValue() {
67-
exists(DataFlow::CallNode newCall | newCall = connectionNode.getAValueReachableFromSource() |
68-
// Check for `ssl_verify_peer: false`
69-
result = newCall.getKeywordArgumentIncludeHashArgument("ssl_verify_peer")
70-
)
67+
result =
68+
connectionUse.(DataFlow::CallNode).getKeywordArgumentIncludeHashArgument("ssl_verify_peer")
7169
}
7270

7371
cached

ruby/ql/test/query-tests/security/cwe-295/Excon.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,23 @@ def method8
4646
# GOOD
4747
Excon.defaults[:ssl_verify_peer] = false
4848
Excon.new("http://example.com/", ssl_verify_peer: true)
49+
end
50+
51+
# Regression test for excon
52+
53+
class Excon
54+
def self.new(params)
55+
Excon::Connection.new(params)
56+
end
57+
end
58+
59+
def method9
60+
# GOOD: connection is not used
61+
Excon.new("foo", ssl_verify_peer: false)
62+
end
63+
64+
def method10
65+
# GOOD
66+
connection = Excon.new("foo")
67+
connection.get("bar")
4968
end

0 commit comments

Comments
 (0)