summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--net/data/ftp/dir-listing-ls-334
-rw-r--r--net/data/ftp/dir-listing-ls-33.expected26
-rw-r--r--net/ftp/ftp_directory_listing_parser_ls.cc5
-rw-r--r--net/ftp/ftp_directory_listing_parser_unittest.cc1
5 files changed, 35 insertions, 2 deletions
diff --git a/AUTHORS b/AUTHORS
index 45e7e6d..253a383 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -580,6 +580,7 @@ Thomas Conti <tomc@amazon.com>
Tiago Vignatti <tiago.vignatti@intel.com>
Tim Ansell <mithro@mithis.com>
Timo Reimann <ttr314@googlemail.com>
+Tom Harwood <tfh@skip.org>
Torsten Kurbad <google@tk-webart.de>
Tomas Popela <tomas.popela@gmail.com>
Trevor Perrin <unsafe@trevp.net>
diff --git a/net/data/ftp/dir-listing-ls-33 b/net/data/ftp/dir-listing-ls-33
new file mode 100644
index 0000000..2a2e6a28
--- /dev/null
+++ b/net/data/ftp/dir-listing-ls-33
@@ -0,0 +1,4 @@
+total -9560322322989056
+-rw-r--r-- 1 stadmin stgroup 4310450 Nov 17 13:12 01643.001.862.TestPermission-DUP0001.zip
+-rw-r--r-- 1 stadmin stgroup 2496430080 Nov 13 14:46 I_Base_01_RSE_R720.iso
+-rw-r--r-- 1 stadmin stgroup 478576612 Nov 13 08:11 I_Base_01_RSE_R720.zip
diff --git a/net/data/ftp/dir-listing-ls-33.expected b/net/data/ftp/dir-listing-ls-33.expected
new file mode 100644
index 0000000..7a54e70
--- /dev/null
+++ b/net/data/ftp/dir-listing-ls-33.expected
@@ -0,0 +1,26 @@
+-
+01643.001.862.TestPermission-DUP0001.zip
+4310450
+1993
+11
+17
+13
+12
+
+-
+I_Base_01_RSE_R720.iso
+2496430080
+1994
+11
+13
+14
+46
+
+-
+I_Base_01_RSE_R720.zip
+478576612
+1994
+11
+13
+8
+11
diff --git a/net/ftp/ftp_directory_listing_parser_ls.cc b/net/ftp/ftp_directory_listing_parser_ls.cc
index 96d0dc8..b259cad 100644
--- a/net/ftp/ftp_directory_listing_parser_ls.cc
+++ b/net/ftp/ftp_directory_listing_parser_ls.cc
@@ -142,11 +142,12 @@ bool ParseFtpDirectoryListingLs(
if (columns.size() == 2 && !received_total_line) {
received_total_line = true;
+ // Some FTP servers incorrectly return a negative integer for "n". Since
+ // this value is ignored anyway, just check any valid integer was
+ // provided.
int64 total_number;
if (!base::StringToInt64(columns[1], &total_number))
return false;
- if (total_number < 0)
- return false;
continue;
}
diff --git a/net/ftp/ftp_directory_listing_parser_unittest.cc b/net/ftp/ftp_directory_listing_parser_unittest.cc
index b21c8da..08abf17 100644
--- a/net/ftp/ftp_directory_listing_parser_unittest.cc
+++ b/net/ftp/ftp_directory_listing_parser_unittest.cc
@@ -156,6 +156,7 @@ const FtpTestParam kTestParams[] = {
{"dir-listing-ls-30", OK},
{"dir-listing-ls-31", OK},
{"dir-listing-ls-32", OK}, // busybox
+ {"dir-listing-ls-33", OK},
{"dir-listing-netware-1", OK},
{"dir-listing-netware-2", OK},