BUG #1449: JDBC client driver bug waiting to happen

Started by Michael Robintonabout 21 years ago2 messagesbugs
Jump to latest
#1Michael Robinton
michael@insulin-pumpers.org

The following bug has been logged online:

Bug reference: 1449
Logged by: Michael Robinton
Email address: michael@insulin-pumpers.org
PostgreSQL version: 7.4.6
Operating system: linux
Description: JDBC client driver bug waiting to happen
Details:

if "int size" is set to 8, there is insufficient storage in "int n" to
accomodate 8 bytes of storage since jave thinks an int is 4 bytes. Since
currently no 8 byte longs are sent, this bug is not apparent.

Michael

/*
* Receives an integer from the backend
*
* @param siz length of the integer in bytes
* @return the integer received from the backend
* @exception SQLException if an I/O error occurs
*/
public int ReceiveInteger(int siz) throws SQLException
{
int n = 0;

try
{
for (int i = 0 ; i < siz ; i++)
{
int b = pg_input.read();

if (b < 0)
throw new
PSQLException("postgresql.stream.eof", PSQLState.COMMUNICATION_ERROR);
n = n | (b << (8 * i)) ;

#2Kris Jurka
books@ejurka.com
In reply to: Michael Robinton (#1)
Re: BUG #1449: JDBC client driver bug waiting to happen

On Fri, 28 Jan 2005, Michael Robinton wrote:

The following bug has been logged online:

Bug reference: 1449
PostgreSQL version: 7.4.6
Description: JDBC client driver bug waiting to happen
Details:

if "int size" is set to 8, there is insufficient storage in "int n" to
accomodate 8 bytes of storage since jave thinks an int is 4 bytes. Since
currently no 8 byte longs are sent, this bug is not apparent.

/*
* Receives an integer from the backend
*/
public int ReceiveInteger(int siz) throws SQLException
{

This is not a bug. The ReceiveInteger function you are looking at is a
part of the low level protocol code and int size will never be > 4. It
has nothing to do with how something like ResultSet.getLong() treats
integer values.

Kris Jurka