]> git.proxmox.com Git - mirror_edk2.git/commitdiff
RedfishPkg/RedfishDiscoverDxe: Fix memory free issue
authorAbner Chang <abner.chang@amd.com>
Fri, 28 Oct 2022 10:16:55 +0000 (18:16 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Tue, 1 Nov 2022 01:17:57 +0000 (01:17 +0000)
Check the memory block pointer before freeing it.

Cc: Nickle Wang <nicklew@nvidia.com>
Cc: Igor Kulchytskyy <igork@ami.com>
Signed-off-by: Abner Chang <abner.chang@amd.com>
Reviewed-by: Nickle Wang <nicklew@nvidia.com>
RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c

index 1293ddd633c662d2ba0407da2e7780d404a453d7..042d6d5fd5df57fabf70d91e0faca210621227a0 100644 (file)
@@ -261,6 +261,7 @@ Tcp6GetSubnetInfo (
 \r
   Tcp6 = (EFI_TCP6_PROTOCOL *)Instance->NetworkInterfaceProtocolInfo.NetworkProtocolInterface;\r
 \r
+  ZeroMem ((VOID *)&IpModedata, sizeof (EFI_IP6_MODE_DATA));\r
   Status = Tcp6->GetModeData (Tcp6, NULL, NULL, &IpModedata, NULL, NULL);\r
   if (EFI_ERROR (Status)) {\r
     DEBUG ((DEBUG_ERROR, "%a: Can't get IP mode data information\n", __FUNCTION__));\r
@@ -282,12 +283,15 @@ Tcp6GetSubnetInfo (
   }\r
 \r
   Instance->SubnetAddrInfoIPv6Number = IpModedata.AddressCount;\r
-  CopyMem (\r
-    (VOID *)Instance->SubnetAddrInfoIPv6,\r
-    (VOID *)&IpModedata.AddressList,\r
-    IpModedata.AddressCount * sizeof (EFI_IP6_ADDRESS_INFO)\r
-    );\r
-  FreePool (IpModedata.AddressList);\r
+  if ((IpModedata.AddressCount != 0) && (IpModedata.AddressList != NULL)) {\r
+    CopyMem (\r
+      (VOID *)Instance->SubnetAddrInfoIPv6,\r
+      (VOID *)&IpModedata.AddressList,\r
+      IpModedata.AddressCount * sizeof (EFI_IP6_ADDRESS_INFO)\r
+      );\r
+    FreePool (IpModedata.AddressList);\r
+  }\r
+\r
   return EFI_SUCCESS;\r
 }\r
 \r