You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by he...@apache.org on 2020/01/28 15:44:16 UTC

[commons-jexl] branch master updated: JEXL-325: fixed potential concurrent execution pb Task #JEXL-325 - Potential race-condition in NumberParser.toString()

This is an automated email from the ASF dual-hosted git repository.

henrib pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-jexl.git


The following commit(s) were added to refs/heads/master by this push:
     new c591d00  JEXL-325: fixed potential concurrent execution pb Task #JEXL-325 - Potential race-condition in NumberParser.toString()
c591d00 is described below

commit c591d00af08b1bff8642e047c12e5c10c76428f3
Author: henrib <he...@apache.org>
AuthorDate: Tue Jan 28 16:43:39 2020 +0100

    JEXL-325: fixed potential concurrent execution pb
    Task #JEXL-325 - Potential race-condition in NumberParser.toString()
---
 RELEASE-NOTES.txt                                               | 1 +
 src/main/java/org/apache/commons/jexl3/parser/NumberParser.java | 6 +++---
 src/site/xdoc/changes.xml                                       | 3 +++
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index fbdc74e..c329e77 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -74,6 +74,7 @@ New Features in 3.2:
 
 Bugs Fixed in 3.2:
 ==================
+* JEXL-325:      Potential race-condition in NumberParser.toString()
 * JEXL-324:      JexlEngine.createExpression("new()").getParsedText() throws NPE
 * JEXL-322:      JXLT String literals cannot contain curly brace
 * JEXL-321:      Empty do-while loop is broken
diff --git a/src/main/java/org/apache/commons/jexl3/parser/NumberParser.java b/src/main/java/org/apache/commons/jexl3/parser/NumberParser.java
index 265a307..5a14188 100644
--- a/src/main/java/org/apache/commons/jexl3/parser/NumberParser.java
+++ b/src/main/java/org/apache/commons/jexl3/parser/NumberParser.java
@@ -36,15 +36,15 @@ public final class NumberParser {
             return "NaN";
         }
         if (BigDecimal.class.equals(clazz)) {
-            return BIGDF.format(literal);
+            synchronized (BIGDF) {
+                return BIGDF.format(literal);
+            }
         }
         StringBuilder strb = new StringBuilder(literal.toString());
         if (Float.class.equals(clazz)) {
             strb.append('f');
         } else if (Double.class.equals(clazz)) {
             strb.append('d');
-        } else if (BigDecimal.class.equals(clazz)) {
-            strb.append('b');
         } else if (BigInteger.class.equals(clazz)) {
             strb.append('h');
         } else if (Long.class.equals(clazz)) {
diff --git a/src/site/xdoc/changes.xml b/src/site/xdoc/changes.xml
index c85438c..01e461a 100644
--- a/src/site/xdoc/changes.xml
+++ b/src/site/xdoc/changes.xml
@@ -26,6 +26,9 @@
     </properties>
     <body>
         <release version="3.2" date="unreleased">
+            <action dev="Dmitri Blinov" type="fix" issue="JEXL-325" due-to="Dmitri Blinov">
+                Potential race-condition in NumberParser.toString()
+            </action>
             <action dev="henrib" type="fix" issue="JEXL-324" due-to="David Costanzo">
                 JexlEngine.createExpression("new()").getParsedText() throws NPE
             </action>