mirror of
https://github.com/curl/curl.git
synced 2026-08-05 03:56:12 +03:00
ftp/sftp: strdup data info memory
Fix the broken implementation to have `data->state` carry pointers into connectdata members. Always dup the memory and free when easy handle closes. Closes #16733
This commit is contained in:
parent
d12129dda5
commit
ebce3f0c02
4 changed files with 18 additions and 15 deletions
|
|
@ -2008,7 +2008,10 @@ static CURLcode ssh_statemachine(struct Curl_easy *data, bool *block)
|
|||
sshc->actualcode = CURLE_OUT_OF_MEMORY;
|
||||
break;
|
||||
}
|
||||
data->state.most_recent_ftp_entrypath = sshc->homedir;
|
||||
free(data->state.most_recent_ftp_entrypath);
|
||||
data->state.most_recent_ftp_entrypath = strdup(sshc->homedir);
|
||||
if(!data->state.most_recent_ftp_entrypath)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
}
|
||||
else {
|
||||
/* Return the error type */
|
||||
|
|
@ -2591,7 +2594,6 @@ static CURLcode ssh_statemachine(struct Curl_easy *data, bool *block)
|
|||
}
|
||||
|
||||
Curl_safefree(sshc->homedir);
|
||||
data->state.most_recent_ftp_entrypath = NULL;
|
||||
|
||||
state(data, SSH_SESSION_DISCONNECT);
|
||||
break;
|
||||
|
|
@ -2857,7 +2859,6 @@ static CURLcode ssh_statemachine(struct Curl_easy *data, bool *block)
|
|||
}
|
||||
|
||||
Curl_safefree(sshc->homedir);
|
||||
data->state.most_recent_ftp_entrypath = NULL;
|
||||
|
||||
state(data, SSH_SESSION_FREE);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue