[ 
https://issues.apache.org/jira/browse/OFBIZ-9707?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Julian Leichert updated OFBIZ-9707:
-----------------------------------
    Attachment: OFBIZ-9707_org.apache.ofbiz.entity.transaction_bugfixes.patch

class GenericXaResource
- line 210: changed to long

class JNDITransactionFactory
- line 52,53: changed static to volatile. fixes double-locking and writing to 
static.

class TransactionUtil
- line 77: changed to final

> [FB] Package org.apache.ofbiz.entity.transaction
> ------------------------------------------------
>
>                 Key: OFBIZ-9707
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-9707
>             Project: OFBiz
>          Issue Type: Sub-task
>          Components: ALL APPLICATIONS, ALL COMPONENTS
>    Affects Versions: Trunk
>            Reporter: Julian Leichert
>            Priority: Minor
>         Attachments: 
> OFBIZ-9707_org.apache.ofbiz.entity.transaction_bugfixes.patch
>
>
> DumbTransactionFactory.java:50, SIC_INNER_SHOULD_BE_STATIC_ANON
> - SIC: The class org.apache.ofbiz.entity.transaction.DumbTransactionFactory$1 
> could be refactored into a named _static_ inner class
> This class is an inner class, but does not use its embedded reference to the 
> object which created it.  This reference makes the instances of the class 
> larger, and may keep the reference to the creator object alive longer than 
> necessary.  If possible, the class should be made into a static inner class. 
> Since anonymous inner classes cannot be marked as static, doing this will 
> require refactoring the inner class so that it is a named inner class.
> DumbTransactionFactory.java:84, SIC_INNER_SHOULD_BE_STATIC_ANON
> - SIC: The class org.apache.ofbiz.entity.transaction.DumbTransactionFactory$2 
> could be refactored into a named _static_ inner class
> This class is an inner class, but does not use its embedded reference to the 
> object which created it.  This reference makes the instances of the class 
> larger, and may keep the reference to the creator object alive longer than 
> necessary.  If possible, the class should be made into a static inner class. 
> Since anonymous inner classes cannot be marked as static, doing this will 
> require refactoring the inner class so that it is a named inner class.
> GenericXaResource.java:210, ICAST_INTEGER_MULTIPLY_CAST_TO_LONG
> - ICAST: Result of integer multiplication cast to long in 
> org.apache.ofbiz.entity.transaction.GenericXaResource.run()
> This code performs integer multiply and then converts the result to a long, 
> as in:
>     long convertDaysToMilliseconds(int days) { return 1000*3600*24*days; }
> If the multiplication is done using long arithmetic, you can avoid the 
> possibility that the result will overflow. For example, you could fix the 
> above code to:
>     long convertDaysToMilliseconds(int days) { return 1000L*3600*24*days; }
> or
>     static final long MILLISECONDS_PER_DAY = 24L*3600*1000;
>     long convertDaysToMilliseconds(int days) { return days * 
> MILLISECONDS_PER_DAY; }
> JNDITransactionFactory.java:56, MS_SHOULD_BE_FINAL
> - MS: org.apache.ofbiz.entity.transaction.JNDITransactionFactory.dsCache 
> isn't final but should be
> This static field public but not final, and could be changed by malicious 
> code or by accident from another package. The field could be made final to 
> avoid this vulnerability.
> JNDITransactionFactory.java:59, DC_DOUBLECHECK
> - DC: Possible doublecheck on 
> org.apache.ofbiz.entity.transaction.JNDITransactionFactory.transactionManager 
> in 
> org.apache.ofbiz.entity.transaction.JNDITransactionFactory.getTransactionManager()
> This method may contain an instance of double-checked locking.  This idiom is 
> not correct according to the semantics of the Java memory model.  For more 
> information, see the web page 
> http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html.
> JNDITransactionFactory.java:74, ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD
> - ST: Write to static field 
> org.apache.ofbiz.entity.transaction.JNDITransactionFactory.transactionManager 
> from instance method 
> org.apache.ofbiz.entity.transaction.JNDITransactionFactory.getTransactionManager()
> This instance method writes to a static field. This is tricky to get correct 
> if multiple instances are being manipulated, and generally bad practice.
> JNDITransactionFactory.java:95, DC_DOUBLECHECK
> - DC: Possible doublecheck on 
> org.apache.ofbiz.entity.transaction.JNDITransactionFactory.userTransaction in 
> org.apache.ofbiz.entity.transaction.JNDITransactionFactory.getUserTransaction()
> This method may contain an instance of double-checked locking.  This idiom is 
> not correct according to the semantics of the Java memory model.  For more 
> information, see the web page 
> http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html.
> JNDITransactionFactory.java:109, ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD
> - ST: Write to static field 
> org.apache.ofbiz.entity.transaction.JNDITransactionFactory.userTransaction 
> from instance method 
> org.apache.ofbiz.entity.transaction.JNDITransactionFactory.getUserTransaction()
> This instance method writes to a static field. This is tricky to get correct 
> if multiple instances are being manipulated, and generally bad practice.
> JNDITransactionFactory.java:121, ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD
> - ST: Write to static field 
> org.apache.ofbiz.entity.transaction.JNDITransactionFactory.transactionManager 
> from instance method 
> org.apache.ofbiz.entity.transaction.JNDITransactionFactory.getUserTransaction()
> This instance method writes to a static field. This is tricky to get correct 
> if multiple instances are being manipulated, and generally bad practice.
> TransactionUtil.java:77, MS_SHOULD_BE_FINAL
> - MS: org.apache.ofbiz.entity.transaction.TransactionUtil.debugResMap isn't 
> final but should be
> This static field public but not final, and could be changed by malicious 
> code or by accident from another package. The field could be made final to 
> avoid this vulnerability.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to