From 0885d16ac22a0ecd2267bf3c8818a3a8a5a9dadb Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Fri, 31 Jul 2026 07:48:54 +0000
Subject: [PATCH] Fix CodeQL warning-severity alerts: missed wakeups, resource leaks, escaping threads (#790)

---
 opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/Base64.java |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/Base64.java b/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/Base64.java
index 84d909d..ba022a8 100644
--- a/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/Base64.java
+++ b/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/Base64.java
@@ -13,6 +13,7 @@
  *
  * Copyright 2006-2009 Sun Microsystems, Inc.
  * Portions Copyright 2014-2016 ForgeRock AS.
+ * Portions Copyright 2026 3A Systems, LLC.
  */
 
 package com.forgerock.opendj.ldap.tools;
@@ -42,6 +43,7 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.PrintStream;
+import java.io.Reader;
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.List;
@@ -246,11 +248,14 @@
             dataToDecode = encodedDataArg.getValue();
         } else {
             final boolean readFromFile = encodedDataFilePathArg.isPresent();
+            Reader source = null;
             BufferedReader reader = null;
             final String encodedDataFilePath = encodedDataFilePathArg.getValue();
             try {
-                reader = new BufferedReader(readFromFile ? new FileReader(encodedDataFilePath)
-                                                         : new InputStreamReader(System.in));
+                // Only a file is closed below; System.in belongs to the caller.
+                source = readFromFile ? new FileReader(encodedDataFilePath)
+                                      : new InputStreamReader(System.in);
+                reader = new BufferedReader(source);
                 final StringBuilder buffer = new StringBuilder();
                 String line;
                 while ((line = reader.readLine()) != null) {
@@ -270,7 +275,7 @@
                                        ERR_BASE64_CANNOT_READ_ENCODED_DATA.get(getExceptionMessage(e)));
             } finally {
                 if (readFromFile) {
-                    closeSilently(reader);
+                    closeSilently(reader, source);
                 }
             }
         }

--
Gitblit v1.10.0