diff options
-rw-r--r-- | lib/ftp.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -3693,7 +3693,6 @@ CURLcode ftp_parse_url_path(struct connectdata *conn) /* get the last slash */ slash_pos=strrchr(cur_pos, '/'); if(slash_pos || !*cur_pos) { - ftpc->dirdepth = 1; /* we consider it to be a single dir */ ftpc->dirs = (char **)calloc(1, sizeof(ftpc->dirs[0])); if(!ftpc->dirs) return CURLE_OUT_OF_MEMORY; @@ -3702,9 +3701,10 @@ CURLcode ftp_parse_url_path(struct connectdata *conn) slash_pos?(int)(slash_pos-cur_pos):1, NULL); if(!ftpc->dirs[0]) { - free(ftpc->dirs); + freedirs(conn); return CURLE_OUT_OF_MEMORY; } + ftpc->dirdepth = 1; /* we consider it to be a single dir */ ftp->file = slash_pos ? slash_pos+1 : cur_pos; /* rest is file name */ } else @@ -3796,8 +3796,10 @@ CURLcode ftp_parse_url_path(struct connectdata *conn) /* prevpath is "raw" so we convert the input path before we compare the strings */ char *path = curl_easy_unescape(conn->data, data->reqdata.path, 0, NULL); - if(!path) + if(!path) { + freedirs(conn); return CURLE_OUT_OF_MEMORY; + } dlen = strlen(path) - (ftp->file?strlen(ftp->file):0); if((dlen == strlen(ftpc->prevpath)) && |