diff --git a/lib/netrc.c b/lib/netrc.c index 059ccdabc..c43fc9fe1 100644 --- a/lib/netrc.c +++ b/lib/netrc.c @@ -111,24 +111,26 @@ int Curl_parsenetrc(char *host, } #endif /* CURLDEBUG */ if(!netrcfile) { -#if defined(HAVE_GETPWUID) && defined(HAVE_GETEUID) - struct passwd *pw; - pw= getpwuid(geteuid()); - if (pw) { -#ifdef VMS - home = decc$translate_vms(pw->pw_dir); -#else - home = pw->pw_dir; -#endif - } -#endif - - if(!home) { - home = curl_getenv("HOME"); /* portable environment reader */ - if(!home) - return -1; + home = curl_getenv("HOME"); /* portable environment reader */ + if(home) { home_alloc = TRUE; +#if defined(HAVE_GETPWUID) && defined(HAVE_GETEUID) } + else { + struct passwd *pw; + pw= getpwuid(geteuid()); + if (pw) { +#ifdef VMS + home = decc$translate_vms(pw->pw_dir); +#else + home = pw->pw_dir; +#endif + } +#endif + } + + if(!home) + return -1; netrcfile = curl_maprintf("%s%s%s", home, DIR_CHAR, NETRC); if(!netrcfile) {