Do not crash on invalid lines

This commit is contained in:
Julian Kornberger 2015-12-28 00:09:00 +01:00
parent f780314026
commit 107079411b
2 changed files with 7 additions and 4 deletions

10
ftp.go
View File

@ -403,10 +403,12 @@ func parseDirListLine(line string) (*Entry, error) {
// Try various time formats that DIR might use, and stop when one works. // Try various time formats that DIR might use, and stop when one works.
for _, format := range dirTimeFormats { for _, format := range dirTimeFormats {
e.Time, err = time.Parse(format, line[:len(format)]) if len(line) > len(format) {
if err == nil { e.Time, err = time.Parse(format, line[:len(format)])
line = line[len(format):] if err == nil {
break line = line[len(format):]
break
}
} }
} }
if err != nil { if err != nil {

View File

@ -58,6 +58,7 @@ var listTestsFail = []unsupportedLine{
{"drwxr-xr-x 3 110 1002 3 Dec 02 209 pub", "Invalid year format in time string"}, {"drwxr-xr-x 3 110 1002 3 Dec 02 209 pub", "Invalid year format in time string"},
{"modify=20150806235817;invalid;UNIX.owner=0; movies", "Unsupported LIST line"}, {"modify=20150806235817;invalid;UNIX.owner=0; movies", "Unsupported LIST line"},
{"Zrwxrwxrwx 1 root other 7 Jan 25 00:17 bin -> usr/bin", "Unknown entry type"}, {"Zrwxrwxrwx 1 root other 7 Jan 25 00:17 bin -> usr/bin", "Unknown entry type"},
{"total 1", "Unsupported LIST line"},
} }
func TestParseValidListLine(t *testing.T) { func TestParseValidListLine(t *testing.T) {