]> git.proxmox.com Git - mirror_edk2.git/commitdiff
RedfishPkg: fix memory leak issue
authorWenyi Xie <xiewenyi2@huawei.com>
Thu, 10 Mar 2022 09:02:14 +0000 (17:02 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Fri, 11 Mar 2022 08:05:46 +0000 (08:05 +0000)
The calloc memory is not free when function collectionEvalOp
return in the halfway.

Cc: Abner Chang <abner.chang@hpe.com>
Cc: Nickle Wang <nickle.wang@hpe.com>
Signed-off-by: Wenyi Xie <xiewenyi2@huawei.com>
Reviewed-by: Abner Chang <abner.chang@hpe.com>
RedfishPkg/PrivateLibrary/RedfishLib/edk2libredfish/src/payload.c

index 3f2b83e834d08d8ca5826deba2e2ab9c5f0bb022..6c6e2246abe3f1faea9f9dd1c50031224c541152 100644 (file)
@@ -620,6 +620,7 @@ collectionEvalOp (
   if (((*StatusCode == NULL) && (members == NULL)) ||\r
       ((*StatusCode != NULL) && ((**StatusCode < HTTP_STATUS_200_OK) || (**StatusCode > HTTP_STATUS_206_PARTIAL_CONTENT))))\r
   {\r
+    free (valid);\r
     return members;\r
   }\r
 \r
@@ -633,6 +634,7 @@ collectionEvalOp (
     if (((*StatusCode == NULL) && (tmp == NULL)) ||\r
         ((*StatusCode != NULL) && ((**StatusCode < HTTP_STATUS_200_OK) || (**StatusCode > HTTP_STATUS_206_PARTIAL_CONTENT))))\r
     {\r
+      free (valid);\r
       return tmp;\r
     }\r
 \r
@@ -658,19 +660,15 @@ collectionEvalOp (
 \r
   cleanupPayload (members);\r
   if (validCount == 0) {\r
-    free (valid);\r
-    return NULL;\r
-  }\r
-\r
-  if (validCount == 1) {\r
+    ret = NULL;\r
+  } else if (validCount == 1) {\r
     ret = valid[0];\r
-    free (valid);\r
-    return ret;\r
   } else {\r
     ret = createCollection (payload->service, validCount, valid);\r
-    free (valid);\r
-    return ret;\r
   }\r
+\r
+  free (valid);\r
+  return ret;\r
 }\r
 \r
 static redfishPayload *\r