db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Trejkaz (JIRA)" <j...@apache.org>
Subject [jira] Created: (DERBY-4060) Blob.getBinaryStream(long,long) is off by one for the pos+len check
Date Mon, 16 Feb 2009 22:02:59 GMT
Blob.getBinaryStream(long,long) is off by one for the pos+len check
-------------------------------------------------------------------

                 Key: DERBY-4060
                 URL: https://issues.apache.org/jira/browse/DERBY-4060
             Project: Derby
          Issue Type: Bug
          Components: JDBC
    Affects Versions: 10.4.2.0
            Reporter: Trejkaz


If you have a BLOB of length 20, and call blob.getBinaryStream(11,10), it will give you an
error:

    java.sql.SQLException: Sum of position('11') and length('10') is greater than the size
of the LOB.

This is following word for word an error in the JDBC Javadoc:

        SQLException - if pos is less than 1 or if pos is greater than the number of bytes
in the Blob or if pos + length is greater than the number of bytes in the Blob

So it's checking 11 + 10 > 20, but it should check 11 + 10 > 21    (pos + len > blob.length()
+ 1) to allow reading the last byte.

The Javadoc for Clob.getCharacterStream(long,long) has similar wording so it may have the
same issue.

Likewise, the client driver may have the same issue -- I haven't yet checked.



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


Mime
View raw message