Skip to content

Commit 9307dd9

Browse files
authored
Merge pull request #1206 from brianmario/dbussink/handle-default-ca-paths
Setup default CA path if not provided
2 parents 673d5a7 + 6ae1d9a commit 9307dd9

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

.rubocop_todo.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Layout/IndentHeredoc:
1717

1818
# Offense count: 2
1919
Metrics/AbcSize:
20-
Max: 90
20+
Max: 91
2121

2222
# Offense count: 31
2323
# Configuration parameters: CountComments, ExcludedMethods.
@@ -32,11 +32,11 @@ Metrics/BlockNesting:
3232
# Offense count: 1
3333
# Configuration parameters: CountComments.
3434
Metrics/ClassLength:
35-
Max: 125
35+
Max: 135
3636

3737
# Offense count: 3
3838
Metrics/CyclomaticComplexity:
39-
Max: 30
39+
Max: 32
4040

4141
# Offense count: 313
4242
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
@@ -51,7 +51,7 @@ Metrics/MethodLength:
5151

5252
# Offense count: 2
5353
Metrics/PerceivedComplexity:
54-
Max: 27
54+
Max: 29
5555

5656
# Offense count: 3
5757
# Configuration parameters: Blacklist.

lib/mysql2/client.rb

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,14 @@ def initialize(opts = {})
4646
# force the encoding to utf8
4747
self.charset_name = opts[:encoding] || 'utf8'
4848

49+
mode = parse_ssl_mode(opts[:ssl_mode]) if opts[:ssl_mode]
50+
if (mode == SSL_MODE_VERIFY_CA || mode == SSL_MODE_VERIFY_IDENTITY) && !opts[:sslca]
51+
opts[:sslca] = find_default_ca_path
52+
end
53+
4954
ssl_options = opts.values_at(:sslkey, :sslcert, :sslca, :sslcapath, :sslcipher)
5055
ssl_set(*ssl_options) if ssl_options.any? || opts.key?(:sslverify)
51-
self.ssl_mode = parse_ssl_mode(opts[:ssl_mode]) if opts[:ssl_mode]
56+
self.ssl_mode = mode if mode
5257

5358
flags = case opts[:flags]
5459
when Array
@@ -115,6 +120,18 @@ def parse_flags_array(flags, initial = 0)
115120
end
116121
end
117122

123+
# Find any default system CA paths to handle system roots
124+
# by default if stricter validation is requested and no
125+
# path is provide.
126+
def find_default_ca_path
127+
[
128+
"/etc/ssl/certs/ca-certificates.crt",
129+
"/etc/pki/tls/certs/ca-bundle.crt",
130+
"/etc/ssl/ca-bundle.pem",
131+
"/etc/ssl/cert.pem",
132+
].find { |f| File.exist?(f) }
133+
end
134+
118135
# Set default program_name in performance_schema.session_connect_attrs
119136
# and performance_schema.session_account_connect_attrs
120137
def parse_connect_attrs(conn_attrs)

0 commit comments

Comments
 (0)