\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
}\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