You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Kenneth Ritch (JIRA)" <ji...@apache.org> on 2010/08/12 04:44:16 UTC

[jira] Created: (NET-334) org.apache.commons.net.io.FromNetASCIIInputStream can throw a NullPointerException

org.apache.commons.net.io.FromNetASCIIInputStream can throw a NullPointerException
----------------------------------------------------------------------------------

                 Key: NET-334
                 URL: https://issues.apache.org/jira/browse/NET-334
             Project: Commons Net
          Issue Type: Bug
    Affects Versions: 2.0
         Environment: OS: Linux -- Redhat enterprise 
JVM 1.6 64bit 


            Reporter: Kenneth Ritch


org.apache.commons.net.io.FromNetASCIIInputStream.available() can throw a NullPointerException if the 
InputStream is null. This has been experienced on a loaded system. 

StackTrace: 

Exception in thread "Telnet Reader" java.lang.NullPointerException 
at org.apache.commons.net.io.FromNetASCIIInputStream.available(FromNetASCIIInputStream.java:202) 
at org.apache.commons.net.io.FromNetASCIIInputStream.read(FromNetASCIIInputStream.java:164) 
at java.io.BufferedInputStream.fill(Unknown Source) 
at java.io.BufferedInputStream.read(Unknown Source) 
at org.apache.commons.net.telnet.TelnetInputStream.__read(TelnetInputStream.java:122) 
at org.apache.commons.net.telnet.TelnetInputStream.read(TelnetInputStream.java:375) 
at org.apache.commons.net.telnet.TelnetInputStream.read(TelnetInputStream.java:492) 
at java.io.BufferedInputStream.fill(Unknown Source) 
at java.io.BufferedInputStream.read1(Unknown Source) 
at java.io.BufferedInputStream.read(Unknown Source) 
at java.io.FilterInputStream.read(Unknown Source) 


Cause: 

The base PushbackInputStream checks the input stream is not closed before invoking avilable()

274  public int available() throws IOException {
275 	ensureOpen();
276		return (buf.length - pos) + super.available();
277  }


Which throws appropriate IOException if input stream is null: 

72	private void ensureOpen() throws IOException {
73		if (in == null)
74		throw new IOException("Stream closed");
75	}


commons.net.io.FromNetASCIIInputStream does not. This can lead to a NullPointerException being thrown if the input stream is null.

191        // PushbackInputStream in JDK 1.1.3 returns the wrong thing
192        /***
193         * Returns the number of bytes that can be read without blocking EXCEPT
194         * when newline conversions have to be made somewhere within the
195         * available block of bytes.  In other words, you really should not
196         * rely on the value returned by this method if you are trying to avoid
197         * blocking.
198         ***/
199        @Override
200        public int available() throws IOException
201        {
202            return (buf.length - pos) + in.available();
203        }



FromNetASCIIInputStream.available() should be changed to mimic the base class behaviour. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (NET-334) org.apache.commons.net.io.FromNetASCIIInputStream can throw a NullPointerException

Posted by "Sebb (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/NET-334?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sebb resolved NET-334.
----------------------

       Resolution: Fixed
    Fix Version/s: 2.2

Could possibly drop the method entirely instead. Meanwhile fix the NPE.

> org.apache.commons.net.io.FromNetASCIIInputStream can throw a NullPointerException
> ----------------------------------------------------------------------------------
>
>                 Key: NET-334
>                 URL: https://issues.apache.org/jira/browse/NET-334
>             Project: Commons Net
>          Issue Type: Bug
>    Affects Versions: 2.0
>         Environment: OS: Linux -- Redhat enterprise 
> JVM 1.6 64bit 
>            Reporter: Kenneth Ritch
>             Fix For: 2.2
>
>
> org.apache.commons.net.io.FromNetASCIIInputStream.available() can throw a NullPointerException if the 
> InputStream is null. This has been experienced on a loaded system. 
> StackTrace: 
> Exception in thread "Telnet Reader" java.lang.NullPointerException 
> at org.apache.commons.net.io.FromNetASCIIInputStream.available(FromNetASCIIInputStream.java:202) 
> at org.apache.commons.net.io.FromNetASCIIInputStream.read(FromNetASCIIInputStream.java:164) 
> at java.io.BufferedInputStream.fill(Unknown Source) 
> at java.io.BufferedInputStream.read(Unknown Source) 
> at org.apache.commons.net.telnet.TelnetInputStream.__read(TelnetInputStream.java:122) 
> at org.apache.commons.net.telnet.TelnetInputStream.read(TelnetInputStream.java:375) 
> at org.apache.commons.net.telnet.TelnetInputStream.read(TelnetInputStream.java:492) 
> at java.io.BufferedInputStream.fill(Unknown Source) 
> at java.io.BufferedInputStream.read1(Unknown Source) 
> at java.io.BufferedInputStream.read(Unknown Source) 
> at java.io.FilterInputStream.read(Unknown Source) 
> Cause: 
> The base PushbackInputStream checks the input stream is not closed before invoking avilable()
> 274  public int available() throws IOException {
> 275 	ensureOpen();
> 276		return (buf.length - pos) + super.available();
> 277  }
> Which throws appropriate IOException if input stream is null: 
> 72	private void ensureOpen() throws IOException {
> 73		if (in == null)
> 74		throw new IOException("Stream closed");
> 75	}
> commons.net.io.FromNetASCIIInputStream does not. This can lead to a NullPointerException being thrown if the input stream is null.
> 191        // PushbackInputStream in JDK 1.1.3 returns the wrong thing
> 192        /***
> 193         * Returns the number of bytes that can be read without blocking EXCEPT
> 194         * when newline conversions have to be made somewhere within the
> 195         * available block of bytes.  In other words, you really should not
> 196         * rely on the value returned by this method if you are trying to avoid
> 197         * blocking.
> 198         ***/
> 199        @Override
> 200        public int available() throws IOException
> 201        {
> 202            return (buf.length - pos) + in.available();
> 203        }
> FromNetASCIIInputStream.available() should be changed to mimic the base class behaviour. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.