diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2011-03-13 00:15:59 +0100 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2011-03-13 00:15:59 +0100 | 
| commit | 60172a0446bbe3f8bf1c7b066a03b7febfc96ceb (patch) | |
| tree | 8da3ec0cded9704d67df84ab7235b35350f02396 /lib | |
| parent | c042340b2a8d503488a93e48b79878158606bd16 (diff) | |
SFTP: gracefully handle shutdown early
When using the multi interface and a handle using SFTP was removed very
early on, we would get a segfault due to the code assumed data was there
that hadn't yet been setup.
Bug: http://curl.haxx.se/mail/lib-2011-03/0066.html
Reported by: Saqib Ali
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/ssh.c | 12 | 
1 files changed, 8 insertions, 4 deletions
| @@ -2047,8 +2047,10 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)          }          sshc->sftp_handle = NULL;        } -      Curl_safefree(sftp_scp->path); -      sftp_scp->path = NULL; +      if(sftp_scp) { +        Curl_safefree(sftp_scp->path); +        sftp_scp->path = NULL; +      }        DEBUGF(infof(data, "SFTP DONE done\n"));  #if 0 /* PREV */ @@ -2752,8 +2754,10 @@ static CURLcode ssh_done(struct connectdata *conn, CURLcode status)    else      result = status; -  Curl_safefree(sftp_scp->path); -  sftp_scp->path = NULL; +  if(sftp_scp) { +    Curl_safefree(sftp_scp->path); +    sftp_scp->path = NULL; +  }    Curl_pgrsDone(conn);    conn->data->req.keepon = 0; /* clear all bits */ | 
