]> git.saurik.com Git - apt.git/commitdiff
remove 256 char line limit by using getline() (POSIX.1-2008)
authorDavid Kalnischkies <kalnischkies@gmail.com>
Sat, 13 Oct 2012 16:56:23 +0000 (18:56 +0200)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Sat, 13 Oct 2012 16:56:23 +0000 (18:56 +0200)
apt-pkg/contrib/netrc.cc
debian/changelog

index 950d21dadb651d4e0a23c8742e4eb186e283888b..c5f9630c4b7c2ca7e4e1fd7a184f77bb191ab923 100644 (file)
@@ -79,13 +79,14 @@ static int parsenetrc_string (char *host, std::string &login, std::string &passw
     char *tok;
     char *tok_buf;
     bool done = false;
-    char netrcbuffer[256];
+    char *netrcbuffer = NULL;
+    size_t netrcbuffer_size = 0;
 
     int state = NOTHING;
     char state_login = 0;        /* Found a login keyword */
     char state_password = 0;     /* Found a password keyword */
 
-    while (!done && fgets(netrcbuffer, sizeof (netrcbuffer), file)) {
+    while (!done && getline(&netrcbuffer, &netrcbuffer_size, file) != -1) {
       tok = strtok_r (netrcbuffer, " \t\n", &tok_buf);
       while (!done && tok) {
         if(login.empty() == false && password.empty() == false) {
@@ -142,8 +143,9 @@ static int parsenetrc_string (char *host, std::string &login, std::string &passw
 
         tok = strtok_r (NULL, " \t\n", &tok_buf);
       } /* while(tok) */
-    } /* while fgets() */
+    } /* while getline() */
 
+    free(netrcbuffer);
     fclose(file);
   }
 
index 4156b6093db01e2ffe0147b0901f9a6d89e21e96..28c064468b46ab02a0538b98d50154bb7c723156 100644 (file)
@@ -27,6 +27,7 @@ apt (0.9.7.6) UNRELEASED; urgency=low
       (partly fixing #687255, b= support has to wait for jessie)
   * apt-pkg/contrib/netrc.cc:
     - remove the 64 char limit for login/password in internal usage
+    - remove 256 char line limit by using getline() (POSIX.1-2008)
 
  -- David Kalnischkies <kalnischkies@gmail.com>  Wed, 19 Sep 2012 11:29:56 +0200