Explorar o código

Merge pull request #47 from etix/hotfix

Fix a crash with pasv invalid responses
Julien Laffaye %!s(int64=10) %!d(string=hai) anos
pai
achega
fc06ecffd6
Modificáronse 1 ficheiros con 6 adicións e 2 borrados
  1. 6 2
      ftp.go

+ 6 - 2
ftp.go

@@ -191,12 +191,16 @@ func (c *ServerConn) pasv() (port int, err error) {
 	start := strings.Index(line, "(")
 	end := strings.LastIndex(line, ")")
 	if start == -1 || end == -1 {
-		err = errors.New("Invalid PASV response format")
-		return
+		return 0, errors.New("Invalid PASV response format")
 	}
 
 	// We have to split the response string
 	pasvData := strings.Split(line[start+1:end], ",")
+
+	if len(pasvData) < 6 {
+		return 0, errors.New("Invalid PASV response format")
+	}
+
 	// Let's compute the port number
 	portPart1, err1 := strconv.Atoi(pasvData[4])
 	if err1 != nil {