netrc: Fixed a memory leak in an OOM condition
authorDan Fandrich <dan@coneharvesters.com>
Wed, 29 Jan 2014 07:10:26 +0000 (08:10 +0100)
committerDan Fandrich <dan@coneharvesters.com>
Thu, 30 Jan 2014 21:15:03 +0000 (22:15 +0100)
lib/url.c

index a870cc5..3e621bd 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -4805,13 +4805,17 @@ static CURLcode override_login(struct SessionHandle *data,
 
   conn->bits.netrc = FALSE;
   if(data->set.use_netrc != CURL_NETRC_IGNORED) {
-    if(Curl_parsenetrc(conn->host.name,
-                       userp, passwdp,
-                       data->set.str[STRING_NETRC_FILE])) {
+    int ret = Curl_parsenetrc(conn->host.name,
+                              userp, passwdp,
+                              data->set.str[STRING_NETRC_FILE]);
+    if(ret > 0) {
       infof(data, "Couldn't find host %s in the "
             DOT_CHAR "netrc file; using defaults\n",
             conn->host.name);
     }
+    else if(ret < 0 ) {
+      return CURLE_OUT_OF_MEMORY;
+    }
     else {
       /* set bits.netrc TRUE to remember that we got the name from a .netrc
          file, so that it is safe to use even if we followed a Location: to a