]> granicus.if.org Git - curl/commitdiff
ssh: free the session on init failures
authorDaniel Gustafsson <daniel@yesql.se>
Fri, 26 Oct 2018 13:39:15 +0000 (15:39 +0200)
committerDaniel Gustafsson <daniel@yesql.se>
Fri, 26 Oct 2018 13:39:15 +0000 (15:39 +0200)
Ensure to clear the session object in case the libssh2 initialization
fails.

It could be argued that the libssh2 error function should be called to
get a proper error message in this case. But since the only error path
in libssh2_knownhost_init() is memory a allocation failure it's safest
to avoid since the libssh2 error handling allocates memory.

Closes #3179
Reviewed-by: Daniel Stenberg <daniel@haxx.se>
lib/ssh.c

index a4b2ca43ab6adac466815b3eb4e1cc0f4959fdf1..da896196f378b821697c8b861518a75dfdc30abf 100644 (file)
--- a/lib/ssh.c
+++ b/lib/ssh.c
@@ -2926,7 +2926,7 @@ static CURLcode ssh_connect(struct connectdata *conn, bool *done)
     int rc;
     ssh->kh = libssh2_knownhost_init(ssh->ssh_session);
     if(!ssh->kh) {
-      /* eeek. TODO: free the ssh_session! */
+      libssh2_session_free(ssh->ssh_session);
       return CURLE_FAILED_INIT;
     }