commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Phil Steitz (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DBCP-241) NPE in case of an SQLException to be thrown on checkOpen() in DelegatingConnection
Date Sun, 23 Sep 2007 05:13:50 GMT

    [ https://issues.apache.org/jira/browse/DBCP-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12529731
] 

Phil Steitz commented on DBCP-241:
----------------------------------

The following code reproduces this bug using DBCP 1.2.2:
conn = new DelegatingConnection( new PoolingConnection
    (delegateConn2, new GenericKeyedObjectPool()));  
try {
    conn.close();
 } catch (Exception ex) {}
 conn.prepareStatement("");

The NPE is generated by this line in PoolingConnection.toString:
return "PoolingConnection: " + _pstmtPool.toString();

The DBCP-187 change to checkOpen in DelegatingException exposed this NPE vulnerability in
PoolingConnection.  Others exist in this class as well and all should be fixed before this
bug is closed.

To avoid this and other NPEs, DBCP 1.x users should avoid calling prepareStatement methods
on closed PoolingConnections.

> NPE in case of an SQLException to be thrown on checkOpen() in DelegatingConnection
> ----------------------------------------------------------------------------------
>
>                 Key: DBCP-241
>                 URL: https://issues.apache.org/jira/browse/DBCP-241
>             Project: Commons Dbcp
>          Issue Type: Bug
>    Affects Versions: 1.2.2
>            Reporter: Jörg Heinicke
>             Fix For: 1.3
>
>
> I only got it from the Spring forums (http://forum.springframework.org/showthread.php?t=44068).
I have no idea which version or if it is already fixed. It should be easy to review.
> Stacktrace:
> java.lang.NullPointerException
> 	at org.apache.commons.dbcp.PoolingConnection.toString(PoolingConnection.java:248)
> 	at java.lang.String.valueOf(String.java:2615)
> 	at java.lang.StringBuffer.append(StringBuffer.java:220)
> 	at org.apache.commons.dbcp.DelegatingConnection.checkOpen(DelegatingConnection.java:354)
> 	at org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:246)
> 	at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:302)
> 	at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:505)
> 	at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:423)
> 	at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
> implementation of the method:
>     protected void checkOpen() throws SQLException {
>         if(_closed) {
>             throw new SQLException
>                 ("Connection " + _conn + " is closed.");
>         }
>     }
> Regards
> Joerg

-- 
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