Files
codeql/ruby/ql/test/query-tests/security/cwe-295/Excon.rb
Harry Maclean d18ca3f5d7 Ruby: Fix bug in excon model
If a codebase included a definition for `Excon.new`, we matched
connection nodes to unrelated request nodes.
2023-08-23 12:55:36 +01:00

68 lines
1.2 KiB
Ruby

require "excon"
def method1
# BAD
Excon.defaults[:ssl_verify_peer] = false
Excon.get("http://example.com/")
end
def method2
# BAD
Excon.ssl_verify_peer = false
Excon.get("http://example.com/")
end
def method3(secure)
# BAD
Excon.defaults[:ssl_verify_peer] = (secure ? true : false)
Excon.get("http://example.com/")
end
def method4
# BAD
conn = Excon::Connection.new("http://example.com/", ssl_verify_peer: false)
conn.get
end
def method5
# BAD
Excon.ssl_verify_peer = true
Excon.new("http://example.com/", ssl_verify_peer: false).get
end
def method6
# GOOD
Excon.defaults[:ssl_verify_peer] = true
Excon.get("http://example.com/")
end
def method7
# GOOD
Excon.ssl_verify_peer = true
Excon.get("http://example.com/")
end
def method8
# GOOD
Excon.defaults[:ssl_verify_peer] = false
Excon.new("http://example.com/", ssl_verify_peer: true)
end
# Regression test for excon
class Excon
def self.new(params)
Excon::Connection.new(params)
end
end
def method9
# GOOD: connection is not used
Excon.new("foo", ssl_verify_peer: false)
end
def method10
# GOOD
connection = Excon.new("foo")
connection.get("bar")
end