[jboss-user] [Persistence, JBoss/CMP, Hibernate, Database] - Postgres 8.1.4 and CMP Error: CVE-2006-2313

fali do-not-reply at jboss.com
Tue Jul 25 08:17:45 EDT 2006


Hi,

I've developed an application with JBoss AS 4.0.4 and CMP Entity Beans, and Postgres 8.1.0 as the datasource. This works well. Postgres recently released version 8.1.4 as a security update, documented in CVE-2006-2313 and CVE-2006-2314, which covers invalidly escaped UTF-8 data. We've since upgraded to Postgres 8.1.4 as a security measure.

Since then, I've started picking up errors in queries generated by the JBOSS CMP engine under certain conditions, and all related to "Text" fields in the database. Enabling debug support in JBoss shows that the query itself is being generated correctly, an example of which is shown below:

UPDATE scheduler SET status=?, response=? WHERE sched_id=?

where status is a java.lang.Integer, and response and sched_id are java.lang.String's. However the query submitted to the database yields numerous exceptions stemming from a UTF-8 problem. I've included a stack trace at the end of this message. Data being inserted into this database is definately 7-bit ASCII data, which maps directly onto UTF-8 without any problems. My datasource has been explicitly configured to use the UTF-8 encoding, and I'm using the latest JDBC driver. 

I'm not sure exactly what the problem is, or where the problem lies, and I was hoping someone would be able to help out. I suspect that JBossAS is generating a string query that the new Postgres 8.1.4 is not happy with. If so, is there any way to alter the generated code. If not, then any and all other help/suggestions will be appreciated. 

Thanks

fali

Documentation for the Postgres problem may be found at:

http://www.postgresql.org/docs/techdocs.50

The stack trace is:

3:23:26,420 DEBUG [SchedulerE] Executing SQL: UPDATE scheduler SET status=?, response=? WHERE sched_id=?
13:23:26,439 ERROR [LogInterceptor] TransactionRolledbackException in method: public abstract void beans.schedulerebean.interfaces.SchedulerE.saveResponse(java.util.Collection) throws java.rmi.RemoteException, causedBy:
13:23:26,446 DEBUG [NestedThrowable] org.jboss.util.NestedThrowable.parentTraceEnabled=true
13:23:26,448 DEBUG [NestedThrowable] org.jboss.util.NestedThrowable.nestedTraceEnabled=false
13:23:26,448 DEBUG [NestedThrowable] org.jboss.util.NestedThrowable.detectDuplicateNesting=true
org.jboss.tm.JBossRollbackException: Unable to commit, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=faximt1.elabco.co.za/189, BranchQual=, localId=189] status=STATUS_NO_TRANSACTION; - nested throwable: (javax.ejb.EJBException: Store failed)
	at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:372)
	at org.jboss.ejb.plugins.TxInterceptorCMT.endTransaction(TxInterceptorCMT.java:501)
	at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:361)
	at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)
	at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:168)
	at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
	at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:136)
	at org.jboss.ejb.EntityContainer.internalInvoke(EntityContainer.java:520)
	at org.jboss.ejb.Container.invoke(Container.java:954)
	at sun.reflect.GeneratedMethodAccessor118.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
	at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
	at org.jboss.invocation.jrmp.server.JRMPInvoker$MBeanServerAction.invoke(JRMPInvoker.java:819)
	at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:420)
	at sun.reflect.GeneratedMethodAccessor123.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
	at sun.rmi.transport.Transport$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Unknown Source)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.ejb.EJBException: Store failed
	at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreEntityCommand.execute(JDBCStoreEntityCommand.java:158)
	at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.storeEntity(JDBCStoreManager.java:666)
	at org.jboss.ejb.plugins.CMPPersistenceManager.storeEntity(CMPPersistenceManager.java:428)
	at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.storeEntity(CachedConnectionInterceptor.java:273)
	at org.jboss.ejb.EntityContainer.storeEntity(EntityContainer.java:749)
	at org.jboss.ejb.GlobalTxEntityMap$2.synchronize(GlobalTxEntityMap.java:149)
	at org.jboss.ejb.GlobalTxEntityMap$GlobalTxSynchronization.synchronize(GlobalTxEntityMap.java:295)
	at org.jboss.ejb.GlobalTxEntityMap$GlobalTxSynchronization.beforeCompletion(GlobalTxEntityMap.java:345)
	at org.jboss.tm.TransactionImpl.doBeforeCompletion(TransactionImpl.java:1491)
	at org.jboss.tm.TransactionImpl.beforePrepare(TransactionImpl.java:1110)
	at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:324)
	... 28 more
Caused by: org.postgresql.util.PSQLException: ERROR: invalid byte sequence for encoding "UTF8": 0x00
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1525)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1309)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:354)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:308)
	at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:251)
	at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreEntityCommand.execute(JDBCStoreEntityCommand.java:150)
	... 38 more


[/url]

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3960652#3960652

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3960652



More information about the jboss-user mailing list