Skip to content

Commit

Permalink
libssh: free sftp_canonicalize_path() data correctly
Browse files Browse the repository at this point in the history
Assisted-by: Harry Sintonen

Fixes #3402
Closes #3403
  • Loading branch information
bagder committed Dec 21, 2018
1 parent 207e7cf commit 976b7bf
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions lib/ssh-libssh.c
Expand Up @@ -95,6 +95,13 @@
#include "memdebug.h"
#include "curl_path.h"

/* A recent macro provided by libssh. Or make our own. */
#ifndef SSH_STRING_FREE_CHAR
/* !checksrc! disable ASSIGNWITHINCONDITION 1 */
#define SSH_STRING_FREE_CHAR(x) \
do { if((x) != NULL) { ssh_string_free_char(x); x = NULL; } } while(0)
#endif

/* Local functions: */
static CURLcode myssh_connect(struct connectdata *conn, bool *done);
static CURLcode myssh_multi_statemach(struct connectdata *conn,
Expand Down Expand Up @@ -1661,7 +1668,7 @@ static CURLcode myssh_statemach_act(struct connectdata *conn, bool *block)
sshc->sftp_session = NULL;
}

Curl_safefree(sshc->homedir);
SSH_STRING_FREE_CHAR(sshc->homedir);
conn->data->state.most_recent_ftp_entrypath = NULL;

state(conn, SSH_SESSION_DISCONNECT);
Expand Down Expand Up @@ -1829,7 +1836,7 @@ static CURLcode myssh_statemach_act(struct connectdata *conn, bool *block)

ssh_disconnect(sshc->ssh_session);

Curl_safefree(sshc->homedir);
SSH_STRING_FREE_CHAR(sshc->homedir);
conn->data->state.most_recent_ftp_entrypath = NULL;

state(conn, SSH_SESSION_FREE);
Expand Down Expand Up @@ -1866,14 +1873,11 @@ static CURLcode myssh_statemach_act(struct connectdata *conn, bool *block)

Curl_safefree(sshc->rsa_pub);
Curl_safefree(sshc->rsa);

Curl_safefree(sshc->quote_path1);
Curl_safefree(sshc->quote_path2);

Curl_safefree(sshc->homedir);

Curl_safefree(sshc->readdir_line);
Curl_safefree(sshc->readdir_linkPath);
SSH_STRING_FREE_CHAR(sshc->homedir);

/* the code we are about to return */
result = sshc->actualcode;
Expand Down

0 comments on commit 976b7bf

Please sign in to comment.