diff --git a/src/main.c b/src/main.c index dda97447d..24df3062a 100644 --- a/src/main.c +++ b/src/main.c @@ -832,16 +832,21 @@ static int parseconfig(char *filename, char configbuffer[4096]; char filebuffer[256]; bool usedarg; + char *home=NULL; if(!filename || !*filename) { /* NULL or no file name attempts to load .curlrc from the homedir! */ #define CURLRC DOT_CHAR "curlrc" - char *home = curl_GetEnv("HOME"); /* portable environment reader */ + home = curl_GetEnv("HOME"); /* portable environment reader */ - if(!home || (strlen(home)>(sizeof(filebuffer)-strlen(CURLRC)))) + if(!home) return CURLE_OK; + if(strlen(home)>(sizeof(filebuffer)-strlen(CURLRC))) { + free(home); + return CURLE_OK; + } sprintf(filebuffer, "%s%s%s", home, DIR_CHAR, CURLRC); @@ -909,6 +914,8 @@ static int parseconfig(char *filename, if(file != stdin) fclose(file); } + if(home) + free(home); return CURLE_OK; }