mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
ssh: make CURLOPT_SSH_PUBLIC_KEYFILE treat "" as NULL
The CURLOPT_SSH_PUBLIC_KEYFILE option has been documented to handle empty strings specially since curl-7_25_0-31-g05a443a but the behavior was unintentionally removed in curl-7_38_0-47-gfa7d04f. This commit restores the original behavior and clarifies it in the documentation that NULL and "" have both the same meaning when passed to CURLOPT_SSH_PUBLIC_KEYFILE. Bug: http://curl.haxx.se/mail/lib-2016-01/0072.html
This commit is contained in:
parent
be79d83b00
commit
be538e0766
@ -68,6 +68,7 @@ This release includes the following bugfixes:
|
|||||||
o configure: assume IPv6 works when cross-compiled [29]
|
o configure: assume IPv6 works when cross-compiled [29]
|
||||||
o openssl: for 1.1.0+ they now provide a SSLeay() macro of their own
|
o openssl: for 1.1.0+ they now provide a SSLeay() macro of their own
|
||||||
o openssl: improved error detection/reporting
|
o openssl: improved error detection/reporting
|
||||||
|
o ssh: CURLOPT_SSH_PUBLIC_KEYFILE now treats "" as NULL again [30]
|
||||||
|
|
||||||
This release includes the following known bugs:
|
This release includes the following known bugs:
|
||||||
|
|
||||||
@ -116,4 +117,5 @@ References to bug reports and discussions on issues:
|
|||||||
[27] = http://curl.haxx.se/bug/?i=597
|
[27] = http://curl.haxx.se/bug/?i=597
|
||||||
[28] = http://curl.haxx.se/bug/?i=584
|
[28] = http://curl.haxx.se/bug/?i=584
|
||||||
[29] = http://curl.haxx.se/bug/?i=594
|
[29] = http://curl.haxx.se/bug/?i=594
|
||||||
|
[30] = http://curl.haxx.se/mail/lib-2016-01/0072.html
|
||||||
|
|
||||||
|
@ -35,11 +35,11 @@ libcurl defaults to \fB$HOME/.ssh/id_dsa.pub\fP if the HOME environment
|
|||||||
variable is set, and just "id_dsa.pub" in the current directory if HOME is not
|
variable is set, and just "id_dsa.pub" in the current directory if HOME is not
|
||||||
set.
|
set.
|
||||||
|
|
||||||
If an empty string is passed, libcurl will pass no public key to libssh2 which
|
If NULL (or an empty string) is passed, libcurl will pass no public key to
|
||||||
then tries to compute it from the private key, this is known to work when
|
libssh2, which then tries to compute it from the private key. This is known
|
||||||
libssh2 1.4.0+ is linked against OpenSSL.
|
to work with libssh2 1.4.0+ linked against OpenSSL.
|
||||||
.SH DEFAULT
|
.SH DEFAULT
|
||||||
As explained above
|
NULL
|
||||||
.SH PROTOCOLS
|
.SH PROTOCOLS
|
||||||
SFTP and SCP
|
SFTP and SCP
|
||||||
.SH EXAMPLE
|
.SH EXAMPLE
|
||||||
|
@ -848,7 +848,9 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||||||
* libssh2 extract the public key from the private key file.
|
* libssh2 extract the public key from the private key file.
|
||||||
* This is done by simply passing sshc->rsa_pub = NULL.
|
* This is done by simply passing sshc->rsa_pub = NULL.
|
||||||
*/
|
*/
|
||||||
if(data->set.str[STRING_SSH_PUBLIC_KEY]) {
|
if(data->set.str[STRING_SSH_PUBLIC_KEY]
|
||||||
|
/* treat empty string the same way as NULL */
|
||||||
|
&& data->set.str[STRING_SSH_PUBLIC_KEY][0]) {
|
||||||
sshc->rsa_pub = strdup(data->set.str[STRING_SSH_PUBLIC_KEY]);
|
sshc->rsa_pub = strdup(data->set.str[STRING_SSH_PUBLIC_KEY]);
|
||||||
if(!sshc->rsa_pub)
|
if(!sshc->rsa_pub)
|
||||||
out_of_memory = TRUE;
|
out_of_memory = TRUE;
|
||||||
@ -869,7 +871,8 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||||||
|
|
||||||
free(home);
|
free(home);
|
||||||
|
|
||||||
infof(data, "Using SSH public key file '%s'\n", sshc->rsa_pub);
|
if(sshc->rsa_pub)
|
||||||
|
infof(data, "Using SSH public key file '%s'\n", sshc->rsa_pub);
|
||||||
infof(data, "Using SSH private key file '%s'\n", sshc->rsa);
|
infof(data, "Using SSH private key file '%s'\n", sshc->rsa);
|
||||||
|
|
||||||
state(conn, SSH_AUTH_PKEY);
|
state(conn, SSH_AUTH_PKEY);
|
||||||
|
Loading…
Reference in New Issue
Block a user