aboutsummaryrefslogtreecommitdiff
path: root/lib/ftp.c
diff options
context:
space:
mode:
authorDan Fandrich <dan@coneharvesters.com>2017-02-25 22:55:46 +0100
committerDan Fandrich <dan@coneharvesters.com>2017-02-25 22:55:46 +0100
commit516e60aa8e96c0b9a0364baa0f84a625e988b06f (patch)
tree5a51731bd7ba1bc86b5eef50062f241981add8f7 /lib/ftp.c
parenteac0dc6a3fef627042d3ffc9f34fa5943e13c066 (diff)
ftp: fixed a NULL pointer dereference on OOM
Diffstat (limited to 'lib/ftp.c')
-rw-r--r--lib/ftp.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/ftp.c b/lib/ftp.c
index 4d5d07a11..867c97994 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -2040,11 +2040,14 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
/* this just dumps information about this second connection */
ftp_pasv_verbose(conn, addr->addr, ftpc->newhost, connectport);
+ Curl_resolv_unlock(data, addr); /* we're done using this address */
+
Curl_safefree(conn->secondaryhostname);
- conn->secondaryhostname = strdup(ftpc->newhost);
conn->secondary_port = ftpc->newport;
+ conn->secondaryhostname = strdup(ftpc->newhost);
+ if(!conn->secondaryhostname)
+ return CURLE_OUT_OF_MEMORY;
- Curl_resolv_unlock(data, addr); /* we're done using this address */
conn->bits.do_more = TRUE;
state(conn, FTP_STOP); /* this phase is completed */