
Riproduttore per CVE-2022-0853: una perdita di memoria in jboss-client quando si utilizza ripetutamente UserTransaction, dimostrata con un caso di test di client remoto Java EJB.
Una perdita di memoria sul lato client jboss, quando si utilizza UserTransaction ripetutamente.
Ad esempio:
private void testTransaction() throws Exception {
for(int i=1; i< 500000; i++) {
System.out.println("Starting process " + i);
// get the UserTransaction and EJB Proxy
Context ctx = getInitialContext(host, port, username, password);
UserTransaction tx = getUserTransaction(ctx);
ControllerRemote cr = (ControllerRemote)
ctx.lookup("Controller/Controller" + "!com.test.usertransaction.ControllerRemote");
try {
tx.begin();
}
catch(Exception ex1) {
ex1.printStackTrace();
}
//System.out.println("user transaction started");
cr.mainCall();
try {
tx.commit();;
}
catch(Exception ex1) {
ex1.printStackTrace();
throw ex1;
}
//System.out.println("commited user transaction");
if(ctx != null)
ctx.close();
}
}
La transazione viene eseguita da un client remoto su un EJB distribuito in EAP 7.3. La transazione viene iterata per 50000 volte. Al termine delle iterazioni si osserva una perdita di memoria. Il 32% della memoria è occupato da org.wildfly.transaction.client.provider.remoting.TransactionClientChannel.