[ftp] Terminate processing after receiving an error
authorSergey Vlasov <vsu@altlinux.ru>
Wed, 30 Jul 2008 19:27:09 +0000 (20:27 +0100)
committerMichael Brown <mcb30@etherboot.org>
Wed, 30 Jul 2008 19:27:09 +0000 (20:27 +0100)
When an error reply (not 1xx, 2xx or 3xx) was received, ftp_reply()
invoked ftp_done() to close connections, but did not return, and the
rest of code in this function could try to send commands to the closed
control connection.

Signed-off-by: Sergey Vlasov <vsu@altlinux.ru>
src/net/tcp/ftp.c

index 9a12064..3b88f7b 100644 (file)
@@ -221,6 +221,7 @@ static void ftp_reply ( struct ftp_request *ftp ) {
                 ( ( status_major == '3' ) && ( ftp->state == FTP_USER ) ) ) ){
                /* Flag protocol error and close connections */
                ftp_done ( ftp, -EPROTO );
+               return;
        }
 
        /* Open passive connection when we get "PASV" response */