You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Max Shenfield (JIRA)" <ji...@apache.org> on 2018/12/21 13:55:00 UTC

[jira] [Created] (NET-663) NullPointerException when FTPClient remote verification fails

Max Shenfield created NET-663:
---------------------------------

             Summary: NullPointerException when FTPClient remote verification fails
                 Key: NET-663
                 URL: https://issues.apache.org/jira/browse/NET-663
             Project: Commons Net
          Issue Type: Bug
          Components: FTP
    Affects Versions: 3.6
         Environment: OS: Linux
            Reporter: Max Shenfield


At L934 of the {{FTPClient}} code, Apache does a check to see whether the data and control connections are at the same IP address ({{verifyRemote}}). If they differ, the data connection socket is closed and an exception is raised.  This can be disabled, but is the default behavior ({{__remoteVerificationEnabled = true}}).

The L934-939 code path where {{verifyRemote}} returns false always raises a {{java.lang.NullPointerException}}.  {{socket.getInetAddress()}} seems to return {{null}} after {{socket.close}} is called, leading to {{socket.getInetAdress().getHostAddress()}} to raise the {{java.lang.NullPointerException}} at L938.   This obfuscates a really useful error message ("Host attempting data connection is not the same as server") with a difficult to debug {{NullPointerException}}.

Example State:

{code}
this.__remoteVerificationEnabled -> true
this.getRemoteAddress().toString() -> "ftp.example.com/987.654.321.000"
socket.getInetAddress.toString() -> "/123.456.789.000"
{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)