If the creation of rsa and rsa_pub fail due to memory, don't try
other authentication methods. Terminate with a memory error.
This commit is contained in:
parent
277bab0c7b
commit
6e7f47da5b
34
lib/ssh.c
34
lib/ssh.c
@ -385,34 +385,36 @@ static CURLcode ssh_statemach_act(struct connectdata *conn)
|
||||
else if (home)
|
||||
sshc->rsa_pub = aprintf("%s/.ssh/id_dsa.pub", home);
|
||||
|
||||
if (sshc->rsa_pub == NULL) {
|
||||
curl_free(home);
|
||||
state(conn, SSH_SESSION_FREE);
|
||||
sshc->actualCode = CURLE_OUT_OF_MEMORY;
|
||||
break;
|
||||
}
|
||||
|
||||
if (data->set.ssh_private_key)
|
||||
sshc->rsa = aprintf("%s", data->set.ssh_private_key);
|
||||
else if (home)
|
||||
sshc->rsa = aprintf("%s/.ssh/id_dsa", home);
|
||||
|
||||
if (sshc->rsa == NULL) {
|
||||
curl_free(home);
|
||||
curl_free(sshc->rsa_pub);
|
||||
state(conn, SSH_SESSION_FREE);
|
||||
sshc->actualCode = CURLE_OUT_OF_MEMORY;
|
||||
break;
|
||||
}
|
||||
|
||||
sshc->passphrase = data->set.key_passwd;
|
||||
if (!sshc->passphrase)
|
||||
sshc->passphrase = "";
|
||||
|
||||
curl_free(home);
|
||||
|
||||
if (sshc->rsa_pub) {
|
||||
infof(conn->data, "Using ssh public key file %s\n", sshc->rsa_pub);
|
||||
}
|
||||
if (sshc->rsa) {
|
||||
infof(conn->data, "Using ssh private key file %s\n", sshc->rsa);
|
||||
}
|
||||
infof(conn->data, "Using ssh public key file %s\n", sshc->rsa_pub);
|
||||
infof(conn->data, "Using ssh private key file %s\n", sshc->rsa);
|
||||
|
||||
if (sshc->rsa_pub && sshc->rsa) {
|
||||
state(conn, SSH_AUTH_PKEY);
|
||||
} else {
|
||||
/* One or both aprint()'s might have failed,
|
||||
move on to password authentication */
|
||||
curl_free(sshc->rsa_pub);
|
||||
curl_free(sshc->rsa);
|
||||
|
||||
state(conn, SSH_AUTH_PASS_INIT);
|
||||
}
|
||||
state(conn, SSH_AUTH_PKEY);
|
||||
} else {
|
||||
state(conn, SSH_AUTH_PASS_INIT);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user