bad directory name extractor fixed, now always free the file and directory

very early, as that could leak memory before
This commit is contained in:
Daniel Stenberg 2000-11-21 19:04:25 +00:00
parent b734bc37eb
commit 29d21bea18
1 changed files with 12 additions and 7 deletions

View File

@ -129,7 +129,7 @@ struct curl_slist *curl_slist_append(struct curl_slist *list, char *data)
}
else {
fprintf(stderr, "Cannot allocate memory for QUOTE list.\n");
exit(-1);
return NULL;
}
if (list) {
@ -584,11 +584,6 @@ CURLcode ftp_done(struct connectdata *conn)
}
}
if(ftp->file)
free(ftp->file);
if(ftp->dir)
free(ftp->dir);
free(ftp);
data->proto.ftp=NULL; /* it is gone */
@ -1406,13 +1401,15 @@ CURLcode ftp(struct connectdata *conn)
it */
ftp->file = strrchr(conn->ppath, '/');
if(ftp->file) {
if(ftp->file != conn->ppath)
dirlength=ftp->file-conn->ppath; /* don't count the traling slash */
ftp->file++; /* point to the first letter in the file name part or
remain NULL */
}
else {
ftp->file = conn->ppath; /* there's only a file part */
}
dirlength=ftp->file-conn->ppath;
if(*ftp->file) {
ftp->file = curl_unescape(ftp->file, 0);
@ -1440,6 +1437,14 @@ CURLcode ftp(struct connectdata *conn)
retcode = _ftp(conn);
/* clean up here, success or error doesn't matter */
if(ftp->file)
free(ftp->file);
if(ftp->dir)
free(ftp->dir);
ftp->file = ftp->dir = NULL; /* zero */
return retcode;
}