This is an automated email from the ASF dual-hosted git repository. asf-gitbox-commits pushed a commit to branch misc-hardening__MATH-1691 in repository https://gitbox.apache.org/repos/asf/commons-math.git
commit 7f9061404e555e2b98923dad47e52f1484325ceb Author: Gilles Sadowski <[email protected]> AuthorDate: Sun Sep 27 18:35:53 2026 +0200 MATH-1691: Inconsistent synchronization. Found by a security scan. --- .../analysis/polynomials/PolynomialsUtils.java | 25 ++++++++++++---------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/polynomials/PolynomialsUtils.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/polynomials/PolynomialsUtils.java index 3a7c07e44..01648b615 100644 --- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/polynomials/PolynomialsUtils.java +++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/polynomials/PolynomialsUtils.java @@ -229,17 +229,20 @@ public final class PolynomialsUtils { final JacobiKey key = new JacobiKey(v, w); if (!JACOBI_COEFFICIENTS.containsKey(key)) { - - // allocate a new list for v, w - final List<BigFraction> list = new ArrayList<>(); - JACOBI_COEFFICIENTS.put(key, list); - - // Pv,w,0(x) = 1; - list.add(BigFraction.ONE); - - // P1(x) = (v - w) / 2 + (2 + v + w) * X / 2 - list.add(BigFraction.of(v - w, 2)); - list.add(BigFraction.of(2 + v + w, 2)); + synchronized(JACOBI_COEFFICIENTS) { + if (!JACOBI_COEFFICIENTS.containsKey(key)) { + // allocate a new list for v, w + final List<BigFraction> list = new ArrayList<>(); + JACOBI_COEFFICIENTS.put(key, list); + + // Pv,w,0(x) = 1; + list.add(BigFraction.ONE); + + // P1(x) = (v - w) / 2 + (2 + v + w) * X / 2 + list.add(BigFraction.of(v - w, 2)); + list.add(BigFraction.of(2 + v + w, 2)); + } + } } return buildPolynomial(degree, JACOBI_COEFFICIENTS.get(key),
