From 44b37afa94f2aa6dc575835ac508ed214f6b983a Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Fri, 31 Jul 2026 17:03:13 +0000
Subject: [PATCH] Fix CodeQL warning-severity alerts: process stream ownership and two leaks (#799)

---
 opendj-server-legacy/src/main/java/org/opends/quicksetup/util/ServerController.java |   36 +++++++++++++-----------------------
 1 files changed, 13 insertions(+), 23 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/ServerController.java b/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/ServerController.java
index 3a7d24f..a51e1dd 100644
--- a/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/ServerController.java
+++ b/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/ServerController.java
@@ -19,6 +19,7 @@
 
 import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.List;
@@ -181,16 +182,9 @@
           logger.info(LocalizableMessage.raw("Launching stop command, argList: "+argList));
           Process process = pb.start();
 
-          BufferedReader err =
-            new BufferedReader(
-                new InputStreamReader(process.getErrorStream()));
-          BufferedReader out =
-            new BufferedReader(
-                new InputStreamReader(process.getInputStream()));
-
           /* Create these objects to resend the stop process output to the details area. */
-          new StopReader(err, true);
-          new StopReader(out, false);
+          new StopReader(process.getErrorStream(), true);
+          new StopReader(process.getInputStream(), false);
 
           int returnValue = process.waitFor();
 
@@ -388,11 +382,8 @@
     String startedId = getStartedId();
     Process process = pb.start();
 
-    BufferedReader err = new BufferedReader(new InputStreamReader(process.getErrorStream()));
-    BufferedReader out = new BufferedReader(new InputStreamReader(process.getInputStream()));
-
-    StartReader errReader = new StartReader(err, startedId, true);
-    StartReader outputReader = new StartReader(out, startedId, false);
+    StartReader errReader = new StartReader(process.getErrorStream(), startedId, true);
+    StartReader outputReader = new StartReader(process.getInputStream(), startedId, false);
 
     int returnValue = process.waitFor();
 
@@ -546,12 +537,11 @@
     /**
      * The protected constructor.
      *
-     * @param reader  the BufferedReader of the stop process.
-     * @param isError a boolean indicating whether the BufferedReader
+     * @param stream  the stream of the stop process to read.
+     * @param isError a boolean indicating whether the stream
      *        corresponds to the standard error or to the standard output.
      */
-    public StopReader(final BufferedReader reader,
-                                      final boolean isError) {
+    public StopReader(final InputStream stream, final boolean isError) {
       final LocalizableMessage errorTag =
               isError ?
                       INFO_ERROR_READING_ERROROUTPUT.get() :
@@ -562,7 +552,7 @@
         @Override
         public void run() {
           // The reader is owned by this thread, which closes it once the stream is drained.
-          try (BufferedReader in = reader) {
+          try (BufferedReader in = new BufferedReader(new InputStreamReader(stream))) {
             String line = in.readLine();
             while (line != null) {
               if (application != null) {
@@ -626,13 +616,13 @@
 
     /**
      * The protected constructor.
-     * @param reader the BufferedReader of the start process.
+     * @param stream the stream of the start process to read.
      * @param startedId the message ID that this class can use to know whether
      * the start is over or not.
-     * @param isError a boolean indicating whether the BufferedReader
+     * @param isError a boolean indicating whether the stream
      * corresponds to the standard error or to the standard output.
      */
-    public StartReader(final BufferedReader reader, final String startedId,
+    public StartReader(final InputStream stream, final String startedId,
         final boolean isError)
     {
       final LocalizableMessage errorTag =
@@ -648,7 +638,7 @@
         public void run()
         {
           // The reader is owned by this thread, which closes it once the stream is drained.
-          try (BufferedReader in = reader)
+          try (BufferedReader in = new BufferedReader(new InputStreamReader(stream)))
           {
             String line = in.readLine();
             while (line != null)

--
Gitblit v1.10.0