From 72bdc5f09362872c8865774a9bf003b6b35dcbc1 Mon Sep 17 00:00:00 2001 From: Fu Siyuan Date: Wed, 13 Dec 2017 10:42:42 +0800 Subject: [PATCH] MdeModulePkg/Ip4Dxe: return error on memory allocate failure instead of ASSERT. This patch updates the IP4 driver to use error status code instead of ASSERT if failed to allocate memory buffer. Reviewed-by: Ye Ting Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Fu Siyuan --- .../Universal/Network/Ip4Dxe/Ip4Config2Nv.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Nv.c b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Nv.c index c8dc6976d7..694a2d0e1f 100644 --- a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Nv.c +++ b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Nv.c @@ -293,8 +293,12 @@ Ip4Config2IpToStr ( @param[in] IpCount The size of IPv4 address list. @param[out] Str The string contains several decimal dotted IPv4 addresses separated by space. + + @retval EFI_SUCCESS Operation is success. + @retval EFI_OUT_OF_RESOURCES Error occurs in allocating memory. + **/ -VOID +EFI_STATUS Ip4Config2IpListToStr ( IN EFI_IPv4_ADDRESS *Ip, IN UINTN IpCount, @@ -317,7 +321,9 @@ Ip4Config2IpListToStr ( TempIp = Ip + Index; if (TempStr == NULL) { TempStr = AllocateZeroPool(2 * IP4_STR_MAX_SIZE); - ASSERT(TempStr != NULL); + if (TempStr == NULL) { + return EFI_OUT_OF_RESOURCES; + } } UnicodeSPrint ( @@ -347,6 +353,8 @@ Ip4Config2IpListToStr ( if (TempStr != NULL) { FreePool(TempStr); } + + return EFI_SUCCESS; } /** @@ -518,7 +526,7 @@ Ip4Config2ConvertConfigNvDataToIfrNvData ( Ip4Config2IpToStr (&Ip4Info->StationAddress, IfrNvData->StationAddress); Ip4Config2IpToStr (&Ip4Info->SubnetMask, IfrNvData->SubnetMask); Ip4Config2IpToStr (&GatewayAddress, IfrNvData->GatewayAddress); - Ip4Config2IpListToStr (DnsAddress, DnsCount, IfrNvData->DnsAddress); + Status = Ip4Config2IpListToStr (DnsAddress, DnsCount, IfrNvData->DnsAddress); Exit: @@ -914,7 +922,10 @@ Ip4FormExtractConfig ( ConfigRequestHdr = HiiConstructConfigHdr (&gIp4Config2NvDataGuid, mIp4Config2StorageName, Private->ChildHandle); Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); ConfigRequest = AllocateZeroPool (Size); - ASSERT (ConfigRequest != NULL); + if (ConfigRequest == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto Failure; + } AllocatedRequest = TRUE; UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, (UINT64)BufferSize); -- 2.39.2