mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-14 18:12:05 +08:00
Ensure we pass nil/null for empty SSL parameters, where I thought PAnsiChar('') returns nil which is not the case obviously. Tries to fix issue #2336.
This commit is contained in:
@ -947,6 +947,8 @@ var
|
|||||||
CurCharset: String;
|
CurCharset: String;
|
||||||
StartupInfo: TStartupInfo;
|
StartupInfo: TStartupInfo;
|
||||||
ExitCode: LongWord;
|
ExitCode: LongWord;
|
||||||
|
sslca, sslkey, sslcert: PAnsiChar;
|
||||||
|
DoSSL, SSLsettingsComplete: Boolean;
|
||||||
begin
|
begin
|
||||||
// Init library
|
// Init library
|
||||||
if libmysql_handle = 0 then begin
|
if libmysql_handle = 0 then begin
|
||||||
@ -995,36 +997,28 @@ begin
|
|||||||
FinalPort := FParameters.Port;
|
FinalPort := FParameters.Port;
|
||||||
case FParameters.NetType of
|
case FParameters.NetType of
|
||||||
ntMySQL_TCPIP: begin
|
ntMySQL_TCPIP: begin
|
||||||
if (
|
sslca := nil;
|
||||||
IsNotEmpty(FParameters.SSLCACertificate)
|
sslkey := nil;
|
||||||
and IsEmpty(FParameters.SSLPrivateKey)
|
sslcert := nil;
|
||||||
and IsEmpty(FParameters.SSLCertificate)
|
if FParameters.SSLCACertificate <> '' then
|
||||||
)
|
sslca := PAnsiChar(AnsiString(FParameters.SSLCACertificate));
|
||||||
or
|
if FParameters.SSLPrivateKey <> '' then
|
||||||
(
|
sslkey := PAnsiChar(AnsiString(FParameters.SSLPrivateKey));
|
||||||
IsNotEmpty(FParameters.SSLCACertificate)
|
if FParameters.SSLCertificate <> '' then
|
||||||
and IsNotEmpty(FParameters.SSLPrivateKey)
|
sslcert := PAnsiChar(AnsiString(FParameters.SSLCertificate));
|
||||||
and IsNotEmpty(FParameters.SSLCertificate)
|
DoSSL := (sslca<>nil) or (sslkey<>nil) or (sslcert<>nil);
|
||||||
)
|
SSLsettingsComplete := ((sslca<>nil) and (sslkey<>nil) and (sslcert<>nil))
|
||||||
then
|
or ((sslca<>nil) and (sslkey=nil) and (sslcert=nil));
|
||||||
begin
|
if DoSSL then begin
|
||||||
FParameters.Options := FParameters.Options + [opSSL];
|
if not SSLsettingsComplete then
|
||||||
{ TODO : Use Cipher and CAPath parameters }
|
raise EDatabaseError.Create('SSL settings incomplete. Please set either CA certificate or all three SSL parameters.')
|
||||||
mysql_ssl_set(
|
else if SSLsettingsComplete then begin
|
||||||
FHandle,
|
FParameters.Options := FParameters.Options + [opSSL];
|
||||||
PansiChar(AnsiString(FParameters.SSLPrivateKey)),
|
{ TODO : Use Cipher and CAPath parameters }
|
||||||
PansiChar(AnsiString(FParameters.SSLCertificate)),
|
showmessage(inttostr(integer(sslkey=nil)));
|
||||||
PansiChar(AnsiString(FParameters.SSLCACertificate)),
|
mysql_ssl_set(FHandle, sslkey, sslcert, sslca, nil, nil);
|
||||||
{PansiChar(AnsiString(FParameters.CApath))}nil,
|
Log(lcInfo, 'SSL parameters successfully set.');
|
||||||
{PansiChar(AnsiString(FParameters.Cipher))}nil);
|
end;
|
||||||
Log(lcInfo, 'SSL parameters successfully set.')
|
|
||||||
end
|
|
||||||
else if IsNotEmpty(FParameters.SSLPrivateKey)
|
|
||||||
or IsNotEmpty(FParameters.SSLCertificate)
|
|
||||||
or IsNotEmpty(FParameters.SSLCACertificate)
|
|
||||||
then
|
|
||||||
begin
|
|
||||||
raise EDatabaseError.Create('SSL settings incomplete. Please set either CA certificate or all three SSL parameters.');
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user