69 lines
2.1 KiB
Diff
69 lines
2.1 KiB
Diff
From d18a5afaf07fdc093c6a6131cc7926a3d5a55407 Mon Sep 17 00:00:00 2001
|
|
From: Daniel Stenberg <daniel@haxx.se>
|
|
Date: Fri, 21 Dec 2018 14:22:42 +0100
|
|
Subject: [PATCH 386/557] libssh: free sftp_canonicalize_path() data correctly
|
|
|
|
Assisted-by: Harry Sintonen
|
|
|
|
Fixes #3402
|
|
Closes #3403
|
|
---
|
|
lib/ssh-libssh.c | 16 ++++++++++------
|
|
1 file changed, 10 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/lib/ssh-libssh.c b/lib/ssh-libssh.c
|
|
index e38c01a..2e920f0 100644
|
|
--- a/lib/ssh-libssh.c
|
|
+++ b/lib/ssh-libssh.c
|
|
@@ -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,
|
|
@@ -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);
|
|
@@ -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);
|
|
@@ -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;
|
|
--
|
|
1.8.3.1
|
|
|