diff --git a/MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.c b/MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.c index 110e4890c8..2a65422e1c 100644 --- a/MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.c +++ b/MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.c @@ -913,8 +913,9 @@ TcpIoReceive ( FragmentCount = Packet->BlockOpNum; Fragment = AllocatePool (FragmentCount * sizeof (NET_FRAGMENT)); - if (Fragment == NULL) { - return EFI_OUT_OF_RESOURCES; + if (Fragment == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; } // // Build the fragment table. @@ -988,8 +989,10 @@ ON_EXIT: } else { TcpIo->RxToken.Tcp6Token.Packet.RxData = NULL; } - - FreePool (Fragment); + + if (Fragment != NULL) { + FreePool (Fragment); + } return Status; }