Blob Blame History Raw
From 9357c2476eb74a9862ec07d0ede8d933b734e5cc Mon Sep 17 00:00:00 2001
From: Cathy Avery <cavery@redhat.com>
Date: Tue, 3 Dec 2019 14:30:50 +0100
Subject: Fix a resource leak issue in deployPkg

RH-Author: Cathy Avery <cavery@redhat.com>
Message-id: <20191203143050.23065-5-cavery@redhat.com>
Patchwork-id: 92837
O-Subject: [RHEL8.2 open-vm-tools PATCH 4/4] Fix a resource leak issue in deployPkg
Bugzilla: 1769881
RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com>
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>

commit 2ffd2913088505d8249fa342b0ee8e5002a69108
Author: Oliver Kurth <okurth@vmware.com>
Date:   Fri Nov 22 14:52:35 2019 -0800

    Fix a resource leak issue in deployPkg

    Variable file going out of scope in error path leaks the storage it
    points to.  Added fclose before return when malloc failed.

Signed-off-by: Cathy Avery <cavery@redhat.com>
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
---
 open-vm-tools/libDeployPkg/linuxDeployment.c | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/open-vm-tools/libDeployPkg/linuxDeployment.c b/open-vm-tools/libDeployPkg/linuxDeployment.c
index 1af0893..4f36a00 100644
--- a/open-vm-tools/libDeployPkg/linuxDeployment.c
+++ b/open-vm-tools/libDeployPkg/linuxDeployment.c
@@ -824,17 +824,18 @@ TransitionState(const char* stateFrom, const char* stateTo)
  *
  *-----------------------------------------------------------------------------
  */
-static char*
-GetNicsToEnable(const char* dir)
+
+static char *
+GetNicsToEnable(const char *dir)
 {
    /*
-    * The file nics.txt will list ordinal number of all nics to enable separated by
-    * a ",". In current architecture we can have max 4 nics. So we just have to read
-    * maximum of 7 characters. This code uses 1024 chars to make sure any future
-    * needs are accomodated.
+    * The file nics.txt will list ordinal number of all nics to enable separated
+    * by a ",". In current architecture we can have max 4 nics. So we just have
+    * to read maximum of 7 characters. This code uses 1024 chars to make sure
+    * any future needs are accomodated.
     */
    static const unsigned int NICS_SIZE = 1024;
-   static const char* nicFile = "/nics.txt";
+   static const char *nicFile = "/nics.txt";
 
    FILE *file;
 
@@ -852,7 +853,9 @@ GetNicsToEnable(const char* dir)
    if (file) {
       ret = malloc(NICS_SIZE);
       if (ret == NULL) {
-         SetDeployError("Error allocating memory to read nic file '%s'", fileName);
+         SetDeployError("Error allocating memory to read nic file '%s'",
+                        fileName);
+         fclose(file);
          free(fileName);
          return ret;
       }
@@ -862,7 +865,8 @@ GetNicsToEnable(const char* dir)
 
       // Check various error condition
       if (ferror(file)) {
-         SetDeployError("Error reading nic file '%s'.(%s)", fileName, strerror(errno));
+         SetDeployError("Error reading nic file '%s'.(%s)", fileName,
+                        strerror(errno));
          free(ret);
          ret = NULL;
       }
@@ -880,6 +884,7 @@ GetNicsToEnable(const char* dir)
    return ret;
 }
 
+
 /**
  *------------------------------------------------------------------------------
  *
-- 
1.8.3.1