From 5a2a992ee6143d605f358a9f6379e7916e346def Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Fri, 24 Jul 2026 09:38:43 +0000
Subject: [PATCH] Fix java/insecure-randomness CodeQL alerts by using SecureRandom (#758)

---
 opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java b/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java
index b8ea716..06d5b16 100644
--- a/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java
+++ b/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java
@@ -13,6 +13,7 @@
  *
  * Copyright 2010 Sun Microsystems, Inc.
  * Portions Copyright 2011-2016 ForgeRock AS.
+ * Portions Copyrighted 2026 3A Systems, LLC.
  */
 package com.forgerock.opendj.ldap.tools;
 
@@ -25,11 +26,11 @@
 import static com.forgerock.opendj.cli.CommonArguments.*;
 
 import java.io.PrintStream;
+import java.security.SecureRandom;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Random;
 
 import com.codahale.metrics.RatioGauge;
 import com.forgerock.opendj.cli.MultiColumnPrinter;
@@ -108,10 +109,10 @@
             private Object[] data;
             private final char[] invalidPassword = "invalid-password".toCharArray();
 
-            private final ThreadLocal<Random> rng = new ThreadLocal<Random>() {
+            private final ThreadLocal<SecureRandom> rng = new ThreadLocal<SecureRandom>() {
                 @Override
-                protected Random initialValue() {
-                    return new Random();
+                protected SecureRandom initialValue() {
+                    return new SecureRandom();
                 }
             };
 
@@ -183,7 +184,7 @@
                     useInvalidPassword = true;
                     break;
                 default:
-                    final Random r = rng.get();
+                    final SecureRandom r = rng.get();
                     final int p = r.nextInt(100);
                     useInvalidPassword = p < invalidCredPercent;
                     break;

--
Gitblit v1.10.0