]> granicus.if.org Git - curl/commitdiff
FTP parselist: fix "total" parser
authorDaniel Stenberg <daniel@haxx.se>
Fri, 3 Jan 2014 23:27:01 +0000 (00:27 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 3 Jan 2014 23:38:43 +0000 (00:38 +0100)
A regression introduced in 7f3b87d8782eae1 (present in the 7.21.4 release)
broke the total parser. Now skip the whitespace and the digits.

Reported-by: Justin Maggard
Bug: http://curl.haxx.se/mail/lib-2014-01/0019.html

lib/ftplistparser.c

index cb3601f58db850c869490d01ab41d0879544db0a..4a46dd13039de5fd1dd85c16c301085aab0e2221 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -449,9 +449,12 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
             finfo->b_data[parser->item_length - 1] = 0;
             if(strncmp("total ", finfo->b_data, 6) == 0) {
               char *endptr = finfo->b_data+6;
-              /* here we can deal with directory size */
+              /* here we can deal with directory size, pass the leading white
+                 spaces and then the digits */
               while(ISSPACE(*endptr))
                 endptr++;
+              while(ISDIGIT(*endptr))
+                endptr++;
               if(*endptr != 0) {
                 PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST);
                 return bufflen;