[ https://issues.apache.org/jira/browse/GERONIMO-4307?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Rick McGuire reassigned GERONIMO-4307: -------------------------------------- Assignee: Rick McGuire > Base64DecoderStream return int value between -128 and +127, should be between > +0 and +255 > ----------------------------------------------------------------------------------------- > > Key: GERONIMO-4307 > URL: https://issues.apache.org/jira/browse/GERONIMO-4307 > Project: Geronimo > Issue Type: Bug > Security Level: public(Regular issues) > Components: specs > Affects Versions: 2.1.1 > Environment: Geronimo 2.1.1 running on Ubuntu 7.10, Sun Java 1.5. > Reporter: Andrew > Assignee: Rick McGuire > > The documentation for InputStream specifies the following: > Reads the next byte of data from the input stream. The value byte is returned > as an int in the range 0 to 255. If no byte is available because the end of > the stream has been reached, the value -1 is returned. This method blocks > until input data is available, the end of the stream is detected, or an > exception is thrown. > A subclass must provide an implementation of this method. > Note the second sentence. As Base64DecoderStream extends FilterInputStream, > which in turn extends InputStream, it should be adhering to that. > However, it currently returns a byte directly, and because Java is a bit > strange, it will do sign extension (I think that's the term?), so a byte of > -1 will become an int of -1 as well, as opposed to an int of 255. As you > might imagine, this causes all sorts of interesting problems when code tries > to read the bytes from this stream and check for a negative value to > determine EOS. > I imagine the fix for this is simply to change > public int read() throws IOException > { > return getByte(); > } > to read > public int read() throws IOException > { > return getByte() & 0xFF; > } > Which is essentially what the Java class ByteArrayInputStream does. > Unless there is a good reason for this behaviour? -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.