[staging/HTTPS-TLS][PATCH 2/2] NetworkPkg: Fix potential assert issue


Palmer, Thomas <thomas.palmer@...>
 

Reviewed by Thomas Palmer <thomas.palmer@hpe.com>

-----Original Message-----
From: Jiaxin Wu [mailto:jiaxin.wu@intel.com]
Sent: Monday, July 11, 2016 12:43 AM
To: edk2-devel@lists.01.org
Cc: Palmer, Thomas <thomas.palmer@hpe.com>; Samer El-Haj-Mahmoud <Smahmoud@lenovo.com>; Long Qin <qin.long@intel.com>; Ye Ting <ting.ye@intel.com>; Fu Siyuan <siyuan.fu@intel.com>
Subject: [staging/HTTPS-TLS][PATCH 2/2] NetworkPkg: Fix potential assert issue

This patch is used to fix potential assert issue when connection failed or buffer allocation failed.

Cc: Palmer Thomas <thomas.palmer@hpe.com>
Cc: Samer El-Haj-Mahmoud <Smahmoud@lenovo.com>
Cc: Long Qin <qin.long@intel.com>
Cc: Ye Ting <ting.ye@intel.com>
Cc: Fu Siyuan <siyuan.fu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jiaxin Wu <jiaxin.wu@intel.com>
---
NetworkPkg/HttpDxe/HttpsSupport.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/NetworkPkg/HttpDxe/HttpsSupport.c b/NetworkPkg/HttpDxe/HttpsSupport.c
index 36f658c..d746972 100644
--- a/NetworkPkg/HttpDxe/HttpsSupport.c
+++ b/NetworkPkg/HttpDxe/HttpsSupport.c
@@ -874,11 +874,14 @@ TlsReceiveOnePdu (
Status = EFI_OUT_OF_RESOURCES;
goto ON_EXIT;
}

Header = NetbufAllocSpace (PduHdr, Len, NET_BUF_TAIL);
- ASSERT (Header != NULL);
+ if (Header == NULL) {
+ Status = EFI_OUT_OF_RESOURCES;
+ goto ON_EXIT;
+ }

//
// First step, receive one TLS header.
//
Status = TlsCommonReceive (HttpInstance, PduHdr, Timeout); @@ -899,12 +902,10 @@ TlsReceiveOnePdu (
InsertTailList (NbufList, &PduHdr->List);
} else {
Status = EFI_PROTOCOL_ERROR;
goto ON_EXIT;
}
-
- ASSERT(Header != NULL);

Len = SwapBytes16(RecordHeader.Length);
if (Len == 0) {
//
// No TLS playload.
@@ -1184,11 +1185,13 @@ TlsConnectSession (
if(HttpInstance->TlsSessionState == EfiTlsSessionError) {
return EFI_ABORTED;
}
}

- ASSERT(HttpInstance->TlsSessionState == EfiTlsSessionDataTransferring);
+ if (HttpInstance->TlsSessionState != EfiTlsSessionDataTransferring) {
+ Status = EFI_ABORTED;
+ }

return Status;
}

/**
@@ -1572,11 +1575,14 @@ HttpsReceive (
//
ASSERT (((TLSRecordHeader *) (TempFragment.Bulk))->ContentType == TLS_CONTENT_TYPE_APPLICATION_DATA);

BufferInSize = ((TLSRecordHeader *) (TempFragment.Bulk))->Length;
BufferIn = AllocateZeroPool (BufferInSize);
- ASSERT (BufferIn != NULL);
+ if (BufferIn == NULL) {
+ Status = EFI_OUT_OF_RESOURCES;
+ return Status;
+ }

CopyMem (BufferIn, TempFragment.Bulk + sizeof (TLSRecordHeader), BufferInSize);

//
// Free the buffer in TempFragment.
--
1.9.5.msysgit.1