From: Daniel Stenberg <daniel@haxx.se>
Date: Wed, 14 Mar 2001 16:12:47 +0000 (+0000)
Subject: hm, don't free the home dir and append the .netrc part properly
X-Git-Tag: curl-7_7-beta5~39
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a564a54e215db69a74a02a37c3db88ae40f5a487;p=curl

hm, don't free the home dir and append the .netrc part properly
---

diff --git a/lib/netrc.c b/lib/netrc.c
index f8f16058c..2911af53e 100644
--- a/lib/netrc.c
+++ b/lib/netrc.c
@@ -83,7 +83,7 @@ int Curl_parsenetrc(char *host,
   struct passwd *pw;
   pw= getpwuid(geteuid());
   if (pw)
-    strncat(netrcbuffer, pw->pw_dir, 255);
+    home = pw->pw_dir;
 #else
   void *pw=NULL;
 #endif
@@ -93,15 +93,16 @@ int Curl_parsenetrc(char *host,
     if(!home) {
       return -1;
     }
+  }
 
-    if(strlen(home)>(sizeof(netrcbuffer)-strlen(NETRC))) {
+  if(strlen(home)>(sizeof(netrcbuffer)-strlen(NETRC))) {
+    if(NULL==pw)
       free(home);
-      return -1;
-    }
-
-    sprintf(netrcbuffer, "%s%s%s", home, DIR_CHAR, NETRC);
+    return -1;
   }
 
+  sprintf(netrcbuffer, "%s%s%s", home, DIR_CHAR, NETRC);
+
   file = fopen(netrcbuffer, "r");
   if(file) {
     char *tok;
@@ -164,7 +165,8 @@ int Curl_parsenetrc(char *host,
     fclose(file);
   }
 
-  free(home);
+  if(NULL==pw)
+    free(home);
 
   return retcode;
 }