libssh2: consider strdup() failures OOM and return correctly

In the ssh_state_pkey_init function.

Closes #19791
This commit is contained in:
Daniel Stenberg 2025-12-01 16:32:39 +01:00
parent 58673ac837
commit 85a6936d76
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2

View file

@ -1205,8 +1205,11 @@ static CURLcode ssh_state_pkey_init(struct Curl_easy *data,
sshc->rsa_pub = sshc->rsa = NULL;
if(data->set.str[STRING_SSH_PRIVATE_KEY])
if(data->set.str[STRING_SSH_PRIVATE_KEY]) {
sshc->rsa = curlx_strdup(data->set.str[STRING_SSH_PRIVATE_KEY]);
if(!sshc->rsa)
out_of_memory = TRUE;
}
else {
/* To ponder about: should really the lib be messing about with the
HOME environment variable etc? */
@ -1251,7 +1254,7 @@ static CURLcode ssh_state_pkey_init(struct Curl_easy *data,
* libssh2 extract the public key from the private key file.
* This is done by simply passing sshc->rsa_pub = NULL.
*/
if(data->set.str[STRING_SSH_PUBLIC_KEY]
if(!out_of_memory && 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 = curlx_strdup(data->set.str[STRING_SSH_PUBLIC_KEY]);