Thread: BUG #1449: JDBC client driver bug waiting to happen
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)) ;
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