mirror of
https://github.com/curl/curl.git
synced 2026-08-26 08:33:31 +03:00
Revert "ftplistparser: keep state between invokes"
This reverts commit abbc8457d8.
Caused fuzzer problems on travis not seen when this was a PR!
This commit is contained in:
parent
a7df35ce21
commit
5c39ccd83f
5 changed files with 32 additions and 43 deletions
37
lib/ftp.c
37
lib/ftp.c
|
|
@ -3699,7 +3699,7 @@ static CURLcode init_wc_data(struct connectdata *conn)
|
|||
char *path = conn->data->state.path;
|
||||
struct WildcardData *wildcard = &(conn->data->wildcard);
|
||||
CURLcode result = CURLE_OK;
|
||||
struct ftp_wc *ftpwc = NULL;
|
||||
struct ftp_wc *ftpwc;
|
||||
|
||||
last_slash = strrchr(conn->data->state.path, '/');
|
||||
if(last_slash) {
|
||||
|
|
@ -3734,15 +3734,16 @@ static CURLcode init_wc_data(struct connectdata *conn)
|
|||
/* allocate ftp protocol specific wildcard data */
|
||||
ftpwc = calloc(1, sizeof(struct ftp_wc));
|
||||
if(!ftpwc) {
|
||||
result = CURLE_OUT_OF_MEMORY;
|
||||
goto fail;
|
||||
Curl_safefree(wildcard->pattern);
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
/* INITIALIZE parselist structure */
|
||||
ftpwc->parser = Curl_ftp_parselist_data_alloc();
|
||||
if(!ftpwc->parser) {
|
||||
result = CURLE_OUT_OF_MEMORY;
|
||||
goto fail;
|
||||
Curl_safefree(wildcard->pattern);
|
||||
free(ftpwc);
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
wildcard->protdata = ftpwc; /* put it to the WildcardData tmp pointer */
|
||||
|
|
@ -3755,13 +3756,20 @@ static CURLcode init_wc_data(struct connectdata *conn)
|
|||
/* try to parse ftp url */
|
||||
result = ftp_parse_url_path(conn);
|
||||
if(result) {
|
||||
goto fail;
|
||||
Curl_safefree(wildcard->pattern);
|
||||
wildcard->dtor(wildcard->protdata);
|
||||
wildcard->dtor = ZERO_NULL;
|
||||
wildcard->protdata = NULL;
|
||||
return result;
|
||||
}
|
||||
|
||||
wildcard->path = strdup(conn->data->state.path);
|
||||
if(!wildcard->path) {
|
||||
result = CURLE_OUT_OF_MEMORY;
|
||||
goto fail;
|
||||
Curl_safefree(wildcard->pattern);
|
||||
wildcard->dtor(wildcard->protdata);
|
||||
wildcard->dtor = ZERO_NULL;
|
||||
wildcard->protdata = NULL;
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
/* backup old write_function */
|
||||
|
|
@ -3775,17 +3783,6 @@ static CURLcode init_wc_data(struct connectdata *conn)
|
|||
|
||||
infof(conn->data, "Wildcard - Parsing started\n");
|
||||
return CURLE_OK;
|
||||
|
||||
fail:
|
||||
if(ftpwc) {
|
||||
Curl_ftp_parselist_data_free(&ftpwc->parser);
|
||||
free(ftpwc);
|
||||
}
|
||||
Curl_safefree(wildcard->pattern);
|
||||
wildcard->dtor(wildcard->protdata);
|
||||
wildcard->dtor = ZERO_NULL;
|
||||
wildcard->protdata = NULL;
|
||||
return result;
|
||||
}
|
||||
|
||||
/* This is called recursively */
|
||||
|
|
@ -3906,8 +3903,6 @@ static CURLcode wc_statemach(struct connectdata *conn)
|
|||
case CURLWC_DONE:
|
||||
case CURLWC_ERROR:
|
||||
case CURLWC_CLEAR:
|
||||
if(wildcard->dtor)
|
||||
wildcard->dtor(wildcard->protdata);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue