1
0
mirror of https://github.com/moparisthebest/curl synced 2024-08-13 17:03:50 -04:00

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:
James Housley 2007-06-20 11:30:35 +00:00
parent 277bab0c7b
commit 6e7f47da5b

View File

@ -384,35 +384,37 @@ static CURLcode ssh_statemach_act(struct connectdata *conn)
sshc->rsa_pub = aprintf("%s", data->set.ssh_public_key);
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);
}