Skip to content

Commit f96b35e

Browse files
committed
Make all ConnectionStringBuilder properties non-null. Fixes #837
1 parent 0fc762c commit f96b35e

File tree

5 files changed

+94
-90
lines changed

5 files changed

+94
-90
lines changed

src/MySqlConnector/Core/ConnectionSettings.cs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public ConnectionSettings(MySqlConnectionStringBuilder csb)
2121
throw new MySqlException("Cannot find Unix Socket at " + csb.Server);
2222
ConnectionProtocol = MySqlConnectionProtocol.UnixSocket;
2323
UnixSocket = Path.GetFullPath(csb.Server);
24+
PipeName = "";
2425
}
2526
else if (csb.ConnectionProtocol == MySqlConnectionProtocol.NamedPipe)
2627
{
@@ -40,6 +41,7 @@ public ConnectionSettings(MySqlConnectionStringBuilder csb)
4041
HostNames = csb.Server.Split(',');
4142
LoadBalance = csb.LoadBalance;
4243
Port = (int) csb.Port;
44+
PipeName = "";
4345
}
4446

4547
UserID = csb.UserID;
@@ -56,7 +58,7 @@ public ConnectionSettings(MySqlConnectionStringBuilder csb)
5658
CertificateStoreLocation = csb.CertificateStoreLocation;
5759
CertificateThumbprint = csb.CertificateThumbprint;
5860

59-
if (csb.TlsVersion is null)
61+
if (csb.TlsVersion.Length == 0)
6062
{
6163
TlsVersions = Utility.GetDefaultSslProtocols();
6264
}
@@ -155,21 +157,21 @@ private static MySqlGuidFormat GetEffectiveGuidFormat(MySqlGuidFormat guidFormat
155157
public IReadOnlyList<string>? HostNames { get; }
156158
public MySqlLoadBalance LoadBalance { get; }
157159
public int Port { get; }
158-
public string? PipeName { get; }
160+
public string PipeName { get; }
159161
public string? UnixSocket { get; }
160162
public string UserID { get; }
161163
public string Password { get; }
162164
public string Database { get; }
163165

164166
// SSL/TLS Options
165167
public MySqlSslMode SslMode { get; }
166-
public string? CertificateFile { get; }
167-
public string? CertificatePassword { get; }
168-
public string? CACertificateFile { get; }
169-
public string? SslCertificateFile { get; }
170-
public string? SslKeyFile { get; }
168+
public string CertificateFile { get; }
169+
public string CertificatePassword { get; }
170+
public string CACertificateFile { get; }
171+
public string SslCertificateFile { get; }
172+
public string SslKeyFile { get; }
171173
public MySqlCertificateStoreLocation CertificateStoreLocation { get; }
172-
public string? CertificateThumbprint { get; }
174+
public string CertificateThumbprint { get; }
173175
public SslProtocols TlsVersions { get; }
174176

175177
// Connection Pooling Options
@@ -186,7 +188,7 @@ private static MySqlGuidFormat GetEffectiveGuidFormat(MySqlGuidFormat guidFormat
186188
public bool AllowPublicKeyRetrieval { get; }
187189
public bool AllowUserVariables { get; }
188190
public bool AllowZeroDateTime { get; }
189-
public string? ApplicationName { get; }
191+
public string ApplicationName { get; }
190192
public bool AutoEnlist { get; }
191193
public int ConnectionTimeout { get; }
192194
public bool ConvertZeroDateTime { get; }
@@ -200,8 +202,8 @@ private static MySqlGuidFormat GetEffectiveGuidFormat(MySqlGuidFormat guidFormat
200202
public uint Keepalive { get; }
201203
public bool NoBackslashEscapes { get; }
202204
public bool PersistSecurityInfo { get; }
203-
public string? ServerRsaPublicKeyFile { get; }
204-
public string? ServerSPN { get; }
205+
public string ServerRsaPublicKeyFile { get; }
206+
public string ServerSPN { get; }
205207
public bool TreatTinyAsBoolean { get; }
206208
public bool UseAffectedRows { get; }
207209
public bool UseCompression { get; }

src/MySqlConnector/Core/ServerSession.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -685,7 +685,7 @@ private async Task<PayloadData> SendEncryptedPasswordAsync(
685685

686686
private async Task<string> GetRsaPublicKeyAsync(string switchRequestName, ConnectionSettings cs, IOBehavior ioBehavior, CancellationToken cancellationToken)
687687
{
688-
if (!string.IsNullOrEmpty(cs.ServerRsaPublicKeyFile))
688+
if (cs.ServerRsaPublicKeyFile.Length != 0)
689689
{
690690
try
691691
{
@@ -1022,7 +1022,7 @@ private async Task<bool> OpenNamedPipeAsync(ConnectionSettings cs, int startTick
10221022
#else
10231023
if (Log.IsInfoEnabled())
10241024
Log.Info("Session{0} connecting to NamedPipe '{1}' on Server '{2}'", m_logArguments[0], cs.PipeName, cs.HostNames![0]);
1025-
var namedPipeStream = new NamedPipeClientStream(cs.HostNames![0], cs.PipeName!, PipeDirection.InOut, PipeOptions.Asynchronous);
1025+
var namedPipeStream = new NamedPipeClientStream(cs.HostNames![0], cs.PipeName, PipeDirection.InOut, PipeOptions.Asynchronous);
10261026
var timeout = Math.Max(1, cs.ConnectionTimeoutMilliseconds - unchecked(Environment.TickCount - startTickCount));
10271027
try
10281028
{
@@ -1076,7 +1076,7 @@ private async Task InitSslAsync(ProtocolCapabilities serverCapabilities, Connect
10761076
var store = new X509Store(StoreName.My, storeLocation);
10771077
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
10781078

1079-
if (cs.CertificateThumbprint is null)
1079+
if (cs.CertificateThumbprint.Length == 0)
10801080
{
10811081
if (store.Certificates.Count == 0)
10821082
{
@@ -1108,7 +1108,7 @@ private async Task InitSslAsync(ProtocolCapabilities serverCapabilities, Connect
11081108
}
11091109
}
11101110

1111-
if (cs.SslCertificateFile is not null && cs.SslKeyFile is not null)
1111+
if (cs.SslCertificateFile.Length != 0 && cs.SslKeyFile.Length != 0)
11121112
{
11131113
#if !NETSTANDARD1_3 && !NETSTANDARD2_0
11141114
m_logArguments[1] = cs.SslKeyFile;
@@ -1182,7 +1182,7 @@ private async Task InitSslAsync(ProtocolCapabilities serverCapabilities, Connect
11821182
throw new NotSupportedException("SslCert and SslKey connection string options are not supported in netstandard1.3 or netstandard2.0.");
11831183
#endif
11841184
}
1185-
else if (cs.CertificateFile is not null)
1185+
else if (cs.CertificateFile.Length != 0)
11861186
{
11871187
try
11881188
{
@@ -1208,7 +1208,7 @@ private async Task InitSslAsync(ProtocolCapabilities serverCapabilities, Connect
12081208
}
12091209

12101210
X509Chain? caCertificateChain = null;
1211-
if (cs.CACertificateFile is not null)
1211+
if (cs.CACertificateFile.Length != 0)
12121212
{
12131213
X509Chain? certificateChain = new()
12141214
{
@@ -1511,7 +1511,7 @@ private void VerifyState(State state1, State state2, State state3)
15111511

15121512
internal SslProtocols SslProtocol => m_sslStream?.SslProtocol ?? SslProtocols.None;
15131513

1514-
private byte[] CreateConnectionAttributes(string? programName)
1514+
private byte[] CreateConnectionAttributes(string programName)
15151515
{
15161516
Log.Debug("Session{0} creating connection attributes", m_logArguments);
15171517
var attributesWriter = new ByteBufferWriter();
@@ -1544,7 +1544,7 @@ private byte[] CreateConnectionAttributes(string? programName)
15441544
using var process = Process.GetCurrentProcess();
15451545
attributesWriter.WriteLengthEncodedString("_pid");
15461546
attributesWriter.WriteLengthEncodedString(process.Id.ToString(CultureInfo.InvariantCulture));
1547-
if (!string.IsNullOrEmpty(programName))
1547+
if (programName.Length != 0)
15481548
{
15491549
attributesWriter.WriteLengthEncodedString("program_name");
15501550
attributesWriter.WriteLengthEncodedString(programName!);

0 commit comments

Comments
 (0)