mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
no more "leaked" memory when this fails on various kinds of bad usage
This commit is contained in:
parent
91c879461e
commit
9c0d9784f6
90
src/main.c
90
src/main.c
@ -1256,7 +1256,47 @@ void progressbarinit(struct ProgressData *bar)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
void free_config_fields(struct Configurable *confp)
|
||||||
|
{
|
||||||
|
if(confp->url)
|
||||||
|
free(confp->url);
|
||||||
|
if(confp->userpwd)
|
||||||
|
free(confp->userpwd);
|
||||||
|
if(confp->postfields)
|
||||||
|
free(confp->postfields);
|
||||||
|
if(confp->proxy)
|
||||||
|
free(confp->proxy);
|
||||||
|
if(confp->proxyuserpwd)
|
||||||
|
free(confp->proxyuserpwd);
|
||||||
|
if(confp->cookie)
|
||||||
|
free(confp->cookie);
|
||||||
|
if(confp->cookiefile)
|
||||||
|
free(confp->cookiefile);
|
||||||
|
if(confp->krb4level)
|
||||||
|
free(confp->krb4level);
|
||||||
|
if(confp->headerfile)
|
||||||
|
free(confp->headerfile);
|
||||||
|
if(confp->outfile)
|
||||||
|
free(confp->outfile);
|
||||||
|
if(confp->infile)
|
||||||
|
free(confp->infile);
|
||||||
|
if(confp->range)
|
||||||
|
free(confp->range);
|
||||||
|
if(confp->customrequest)
|
||||||
|
free(confp->customrequest);
|
||||||
|
if(confp->writeout)
|
||||||
|
free(confp->writeout);
|
||||||
|
if(confp->httppost)
|
||||||
|
curl_formfree(confp->httppost);
|
||||||
|
|
||||||
|
curl_slist_free_all(confp->quote); /* the checks for confp->quote == NULL */
|
||||||
|
curl_slist_free_all(confp->postquote); /* */
|
||||||
|
curl_slist_free_all(confp->headers); /* */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
operate(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
char errorbuffer[CURL_ERROR_SIZE];
|
char errorbuffer[CURL_ERROR_SIZE];
|
||||||
char useragent[128]; /* buah, we don't want a larger default user agent */
|
char useragent[128]; /* buah, we don't want a larger default user agent */
|
||||||
@ -1291,8 +1331,6 @@ int main(int argc, char *argv[])
|
|||||||
curl_memdebug("memdump");
|
curl_memdebug("memdump");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
memset(&config, 0, sizeof(struct Configurable));
|
|
||||||
|
|
||||||
config.showerror=TRUE;
|
config.showerror=TRUE;
|
||||||
config.conf=CONF_DEFAULT;
|
config.conf=CONF_DEFAULT;
|
||||||
#if 0
|
#if 0
|
||||||
@ -1686,37 +1724,7 @@ int main(int argc, char *argv[])
|
|||||||
printf("--%s--\n", MIMEseparator);
|
printf("--%s--\n", MIMEseparator);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(config.url)
|
free_config_fields(&config);
|
||||||
free(config.url);
|
|
||||||
if(config.userpwd)
|
|
||||||
free(config.userpwd);
|
|
||||||
if(config.postfields)
|
|
||||||
free(config.postfields);
|
|
||||||
if(config.proxy)
|
|
||||||
free(config.proxy);
|
|
||||||
if(config.proxyuserpwd)
|
|
||||||
free(config.proxyuserpwd);
|
|
||||||
if(config.cookie)
|
|
||||||
free(config.cookie);
|
|
||||||
if(config.cookiefile)
|
|
||||||
free(config.cookiefile);
|
|
||||||
if(config.krb4level)
|
|
||||||
free(config.krb4level);
|
|
||||||
if(config.headerfile)
|
|
||||||
free(config.headerfile);
|
|
||||||
if(config.outfile)
|
|
||||||
free(config.outfile);
|
|
||||||
if(config.infile)
|
|
||||||
free(config.infile);
|
|
||||||
if(config.range)
|
|
||||||
free(config.range);
|
|
||||||
if(config.customrequest)
|
|
||||||
free(config.customrequest);
|
|
||||||
if(config.writeout)
|
|
||||||
free(config.writeout);
|
|
||||||
|
|
||||||
if(config.httppost)
|
|
||||||
curl_formfree(config.httppost);
|
|
||||||
|
|
||||||
if(allocuseragent)
|
if(allocuseragent)
|
||||||
free(config.useragent);
|
free(config.useragent);
|
||||||
@ -1724,9 +1732,17 @@ int main(int argc, char *argv[])
|
|||||||
/* cleanup memory used for URL globbing patterns */
|
/* cleanup memory used for URL globbing patterns */
|
||||||
glob_cleanup(urls);
|
glob_cleanup(urls);
|
||||||
|
|
||||||
curl_slist_free_all(config.quote); /* the checks for config.quote == NULL */
|
return res;
|
||||||
curl_slist_free_all(config.postquote); /* */
|
}
|
||||||
curl_slist_free_all(config.headers); /* */
|
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int res;
|
||||||
|
memset(&config, 0, sizeof(struct Configurable));
|
||||||
|
|
||||||
|
res = operate(argc, argv);
|
||||||
|
free_config_fields(&config);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user