X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=NetworkPkg%2FHttpDxe%2FHttpsSupport.c;h=ad611e7c383688ab253d862b46fed10c7611309b;hb=d1050b9dff1cace252aff86630bfdb59dff5f507;hp=d503e38515abbc8ec668eed2a0231faf5cbf27d4;hpb=2f88bd3a1296c522317f1c21377876de63de5be7;p=mirror_edk2.git diff --git a/NetworkPkg/HttpDxe/HttpsSupport.c b/NetworkPkg/HttpDxe/HttpsSupport.c index d503e38515..ad611e7c38 100644 --- a/NetworkPkg/HttpDxe/HttpsSupport.c +++ b/NetworkPkg/HttpDxe/HttpsSupport.c @@ -31,15 +31,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ CHAR8 * AsciiStrCaseStr ( - IN CONST CHAR8 *String, - IN CONST CHAR8 *SearchString + IN CONST CHAR8 *String, + IN CONST CHAR8 *SearchString ) { - CONST CHAR8 *FirstMatch; - CONST CHAR8 *SearchStringTmp; + CONST CHAR8 *FirstMatch; + CONST CHAR8 *SearchStringTmp; - CHAR8 Src; - CHAR8 Dst; + CHAR8 Src; + CHAR8 Dst; // // ASSERT both strings are less long than PcdMaximumAsciiStringLength @@ -48,15 +48,16 @@ AsciiStrCaseStr ( ASSERT (AsciiStrSize (SearchString) != 0); if (*SearchString == '\0') { - return (CHAR8 *) String; + return (CHAR8 *)String; } while (*String != '\0') { SearchStringTmp = SearchString; - FirstMatch = String; + FirstMatch = String; - while ((*SearchStringTmp != '\0') - && (*String != '\0')) { + while ( (*SearchStringTmp != '\0') + && (*String != '\0')) + { Src = *String; Dst = *SearchStringTmp; @@ -77,7 +78,7 @@ AsciiStrCaseStr ( } if (*SearchStringTmp == '\0') { - return (CHAR8 *) FirstMatch; + return (CHAR8 *)FirstMatch; } String = FirstMatch + 1; @@ -95,12 +96,12 @@ AsciiStrCaseStr ( VOID EFIAPI FreeNbufList ( - IN VOID *Arg + IN VOID *Arg ) { ASSERT (Arg != NULL); - NetbufFreeList ((LIST_ENTRY *) Arg); + NetbufFreeList ((LIST_ENTRY *)Arg); FreePool (Arg); } @@ -115,7 +116,7 @@ FreeNbufList ( **/ BOOLEAN IsHttpsUrl ( - IN CHAR8 *Url + IN CHAR8 *Url ) { CHAR8 *Tmp; @@ -123,7 +124,7 @@ IsHttpsUrl ( Tmp = NULL; Tmp = AsciiStrCaseStr (Url, HTTPS_FLAG); - if (Tmp != NULL && Tmp == Url) { + if ((Tmp != NULL) && (Tmp == Url)) { return TRUE; } @@ -144,14 +145,14 @@ IsHttpsUrl ( EFI_HANDLE EFIAPI TlsCreateChild ( - IN EFI_HANDLE ImageHandle, - OUT EFI_SERVICE_BINDING_PROTOCOL **TlsSb, - OUT EFI_TLS_PROTOCOL **TlsProto, - OUT EFI_TLS_CONFIGURATION_PROTOCOL **TlsConfiguration + IN EFI_HANDLE ImageHandle, + OUT EFI_SERVICE_BINDING_PROTOCOL **TlsSb, + OUT EFI_TLS_PROTOCOL **TlsProto, + OUT EFI_TLS_CONFIGURATION_PROTOCOL **TlsConfiguration ) { - EFI_STATUS Status; - EFI_HANDLE TlsChildHandle; + EFI_STATUS Status; + EFI_HANDLE TlsChildHandle; TlsChildHandle = 0; @@ -159,10 +160,10 @@ TlsCreateChild ( // Locate TlsServiceBinding protocol. // gBS->LocateProtocol ( - &gEfiTlsServiceBindingProtocolGuid, - NULL, - (VOID **) TlsSb - ); + &gEfiTlsServiceBindingProtocolGuid, + NULL, + (VOID **)TlsSb + ); if (*TlsSb == NULL) { return NULL; } @@ -175,7 +176,7 @@ TlsCreateChild ( Status = gBS->OpenProtocol ( TlsChildHandle, &gEfiTlsProtocolGuid, - (VOID **) TlsProto, + (VOID **)TlsProto, ImageHandle, TlsChildHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -188,7 +189,7 @@ TlsCreateChild ( Status = gBS->OpenProtocol ( TlsChildHandle, &gEfiTlsConfigurationProtocolGuid, - (VOID **) TlsConfiguration, + (VOID **)TlsConfiguration, ImageHandle, TlsChildHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -214,10 +215,10 @@ TlsCreateChild ( EFI_STATUS EFIAPI TlsCreateTxRxEvent ( - IN OUT HTTP_PROTOCOL *HttpInstance + IN OUT HTTP_PROTOCOL *HttpInstance ) { - EFI_STATUS Status; + EFI_STATUS Status; if (!HttpInstance->LocalAddressIsIPv6) { // @@ -234,14 +235,14 @@ TlsCreateTxRxEvent ( goto ERROR; } - HttpInstance->Tcp4TlsTxData.Push = TRUE; - HttpInstance->Tcp4TlsTxData.Urgent = FALSE; - HttpInstance->Tcp4TlsTxData.DataLength = 0; - HttpInstance->Tcp4TlsTxData.FragmentCount = 1; + HttpInstance->Tcp4TlsTxData.Push = TRUE; + HttpInstance->Tcp4TlsTxData.Urgent = FALSE; + HttpInstance->Tcp4TlsTxData.DataLength = 0; + HttpInstance->Tcp4TlsTxData.FragmentCount = 1; HttpInstance->Tcp4TlsTxData.FragmentTable[0].FragmentLength = HttpInstance->Tcp4TlsTxData.DataLength; HttpInstance->Tcp4TlsTxData.FragmentTable[0].FragmentBuffer = NULL; - HttpInstance->Tcp4TlsTxToken.Packet.TxData = &HttpInstance->Tcp4TlsTxData; - HttpInstance->Tcp4TlsTxToken.CompletionToken.Status = EFI_NOT_READY; + HttpInstance->Tcp4TlsTxToken.Packet.TxData = &HttpInstance->Tcp4TlsTxData; + HttpInstance->Tcp4TlsTxToken.CompletionToken.Status = EFI_NOT_READY; // // For Tcp4TlsRxToken. @@ -257,12 +258,12 @@ TlsCreateTxRxEvent ( goto ERROR; } - HttpInstance->Tcp4TlsRxData.DataLength = 0; - HttpInstance->Tcp4TlsRxData.FragmentCount = 1; - HttpInstance->Tcp4TlsRxData.FragmentTable[0].FragmentLength = HttpInstance->Tcp4TlsRxData.DataLength ; - HttpInstance->Tcp4TlsRxData.FragmentTable[0].FragmentBuffer = NULL; - HttpInstance->Tcp4TlsRxToken.Packet.RxData = &HttpInstance->Tcp4TlsRxData; - HttpInstance->Tcp4TlsRxToken.CompletionToken.Status = EFI_NOT_READY; + HttpInstance->Tcp4TlsRxData.DataLength = 0; + HttpInstance->Tcp4TlsRxData.FragmentCount = 1; + HttpInstance->Tcp4TlsRxData.FragmentTable[0].FragmentLength = HttpInstance->Tcp4TlsRxData.DataLength; + HttpInstance->Tcp4TlsRxData.FragmentTable[0].FragmentBuffer = NULL; + HttpInstance->Tcp4TlsRxToken.Packet.RxData = &HttpInstance->Tcp4TlsRxData; + HttpInstance->Tcp4TlsRxToken.CompletionToken.Status = EFI_NOT_READY; } else { // // For Tcp6TlsTxToken. @@ -278,14 +279,14 @@ TlsCreateTxRxEvent ( goto ERROR; } - HttpInstance->Tcp6TlsTxData.Push = TRUE; - HttpInstance->Tcp6TlsTxData.Urgent = FALSE; - HttpInstance->Tcp6TlsTxData.DataLength = 0; - HttpInstance->Tcp6TlsTxData.FragmentCount = 1; + HttpInstance->Tcp6TlsTxData.Push = TRUE; + HttpInstance->Tcp6TlsTxData.Urgent = FALSE; + HttpInstance->Tcp6TlsTxData.DataLength = 0; + HttpInstance->Tcp6TlsTxData.FragmentCount = 1; HttpInstance->Tcp6TlsTxData.FragmentTable[0].FragmentLength = HttpInstance->Tcp6TlsTxData.DataLength; HttpInstance->Tcp6TlsTxData.FragmentTable[0].FragmentBuffer = NULL; - HttpInstance->Tcp6TlsTxToken.Packet.TxData = &HttpInstance->Tcp6TlsTxData; - HttpInstance->Tcp6TlsTxToken.CompletionToken.Status = EFI_NOT_READY; + HttpInstance->Tcp6TlsTxToken.Packet.TxData = &HttpInstance->Tcp6TlsTxData; + HttpInstance->Tcp6TlsTxToken.CompletionToken.Status = EFI_NOT_READY; // // For Tcp6TlsRxToken. @@ -301,12 +302,12 @@ TlsCreateTxRxEvent ( goto ERROR; } - HttpInstance->Tcp6TlsRxData.DataLength = 0; - HttpInstance->Tcp6TlsRxData.FragmentCount = 1; - HttpInstance->Tcp6TlsRxData.FragmentTable[0].FragmentLength = HttpInstance->Tcp6TlsRxData.DataLength ; - HttpInstance->Tcp6TlsRxData.FragmentTable[0].FragmentBuffer = NULL; - HttpInstance->Tcp6TlsRxToken.Packet.RxData = &HttpInstance->Tcp6TlsRxData; - HttpInstance->Tcp6TlsRxToken.CompletionToken.Status = EFI_NOT_READY; + HttpInstance->Tcp6TlsRxData.DataLength = 0; + HttpInstance->Tcp6TlsRxData.FragmentCount = 1; + HttpInstance->Tcp6TlsRxData.FragmentTable[0].FragmentLength = HttpInstance->Tcp6TlsRxData.DataLength; + HttpInstance->Tcp6TlsRxData.FragmentTable[0].FragmentBuffer = NULL; + HttpInstance->Tcp6TlsRxToken.Packet.RxData = &HttpInstance->Tcp6TlsRxData; + HttpInstance->Tcp6TlsRxToken.CompletionToken.Status = EFI_NOT_READY; } return Status; @@ -329,13 +330,13 @@ ERROR: VOID EFIAPI TlsCloseTxRxEvent ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ) { ASSERT (HttpInstance != NULL); if (!HttpInstance->LocalAddressIsIPv6) { if (NULL != HttpInstance->Tcp4TlsTxToken.CompletionToken.Event) { - gBS->CloseEvent(HttpInstance->Tcp4TlsTxToken.CompletionToken.Event); + gBS->CloseEvent (HttpInstance->Tcp4TlsTxToken.CompletionToken.Event); HttpInstance->Tcp4TlsTxToken.CompletionToken.Event = NULL; } @@ -345,7 +346,7 @@ TlsCloseTxRxEvent ( } } else { if (NULL != HttpInstance->Tcp6TlsTxToken.CompletionToken.Event) { - gBS->CloseEvent(HttpInstance->Tcp6TlsTxToken.CompletionToken.Event); + gBS->CloseEvent (HttpInstance->Tcp6TlsTxToken.CompletionToken.Event); HttpInstance->Tcp6TlsTxToken.CompletionToken.Event = NULL; } @@ -369,7 +370,7 @@ TlsCloseTxRxEvent ( **/ EFI_STATUS TlsConfigCertificate ( - IN OUT HTTP_PROTOCOL *HttpInstance + IN OUT HTTP_PROTOCOL *HttpInstance ) { EFI_STATUS Status; @@ -388,15 +389,15 @@ TlsConfigCertificate ( // // Try to read the TlsCaCertificate variable. // - Status = gRT->GetVariable ( - EFI_TLS_CA_CERTIFICATE_VARIABLE, - &gEfiTlsCaCertificateGuid, - NULL, - &CACertSize, - NULL - ); + Status = gRT->GetVariable ( + EFI_TLS_CA_CERTIFICATE_VARIABLE, + &gEfiTlsCaCertificateGuid, + NULL, + &CACertSize, + NULL + ); - if (EFI_ERROR (Status) && Status != EFI_BUFFER_TOO_SMALL) { + if (EFI_ERROR (Status) && (Status != EFI_BUFFER_TOO_SMALL)) { return Status; } @@ -427,62 +428,82 @@ TlsConfigCertificate ( // // Sanity check // - Status = EFI_INVALID_PARAMETER; - CertCount = 0; - ItemDataSize = (UINT32) CACertSize; + Status = EFI_INVALID_PARAMETER; + CertCount = 0; + ItemDataSize = (UINT32)CACertSize; while (ItemDataSize > 0) { if (ItemDataSize < sizeof (EFI_SIGNATURE_LIST)) { - DEBUG ((DEBUG_ERROR, "%a: truncated EFI_SIGNATURE_LIST header\n", - __FUNCTION__)); + DEBUG (( + DEBUG_ERROR, + "%a: truncated EFI_SIGNATURE_LIST header\n", + __FUNCTION__ + )); goto FreeCACert; } - CertList = (EFI_SIGNATURE_LIST *) (CACert + (CACertSize - ItemDataSize)); + CertList = (EFI_SIGNATURE_LIST *)(CACert + (CACertSize - ItemDataSize)); if (CertList->SignatureListSize < sizeof (EFI_SIGNATURE_LIST)) { - DEBUG ((DEBUG_ERROR, + DEBUG (( + DEBUG_ERROR, "%a: SignatureListSize too small for EFI_SIGNATURE_LIST\n", - __FUNCTION__)); + __FUNCTION__ + )); goto FreeCACert; } if (CertList->SignatureListSize > ItemDataSize) { - DEBUG ((DEBUG_ERROR, "%a: truncated EFI_SIGNATURE_LIST body\n", - __FUNCTION__)); + DEBUG (( + DEBUG_ERROR, + "%a: truncated EFI_SIGNATURE_LIST body\n", + __FUNCTION__ + )); goto FreeCACert; } if (!CompareGuid (&CertList->SignatureType, &gEfiCertX509Guid)) { - DEBUG ((DEBUG_ERROR, "%a: only X509 certificates are supported\n", - __FUNCTION__)); + DEBUG (( + DEBUG_ERROR, + "%a: only X509 certificates are supported\n", + __FUNCTION__ + )); Status = EFI_UNSUPPORTED; goto FreeCACert; } if (CertList->SignatureHeaderSize != 0) { - DEBUG ((DEBUG_ERROR, "%a: SignatureHeaderSize must be 0 for X509\n", - __FUNCTION__)); + DEBUG (( + DEBUG_ERROR, + "%a: SignatureHeaderSize must be 0 for X509\n", + __FUNCTION__ + )); goto FreeCACert; } if (CertList->SignatureSize < sizeof (EFI_SIGNATURE_DATA)) { - DEBUG ((DEBUG_ERROR, - "%a: SignatureSize too small for EFI_SIGNATURE_DATA\n", __FUNCTION__)); + DEBUG (( + DEBUG_ERROR, + "%a: SignatureSize too small for EFI_SIGNATURE_DATA\n", + __FUNCTION__ + )); goto FreeCACert; } CertArraySizeInBytes = (CertList->SignatureListSize - sizeof (EFI_SIGNATURE_LIST)); if (CertArraySizeInBytes % CertList->SignatureSize != 0) { - DEBUG ((DEBUG_ERROR, + DEBUG (( + DEBUG_ERROR, "%a: EFI_SIGNATURE_DATA array not a multiple of SignatureSize\n", - __FUNCTION__)); + __FUNCTION__ + )); goto FreeCACert; } - CertCount += CertArraySizeInBytes / CertList->SignatureSize; + CertCount += CertArraySizeInBytes / CertList->SignatureSize; ItemDataSize -= CertList->SignatureListSize; } + if (CertCount == 0) { DEBUG ((DEBUG_ERROR, "%a: no X509 certificates provided\n", __FUNCTION__)); goto FreeCACert; @@ -491,11 +512,11 @@ TlsConfigCertificate ( // // Enumerate all data and erasing the target item. // - ItemDataSize = (UINT32) CACertSize; - CertList = (EFI_SIGNATURE_LIST *) CACert; + ItemDataSize = (UINT32)CACertSize; + CertList = (EFI_SIGNATURE_LIST *)CACert; while ((ItemDataSize > 0) && (ItemDataSize >= CertList->SignatureListSize)) { - Cert = (EFI_SIGNATURE_DATA *) ((UINT8 *) CertList + sizeof (EFI_SIGNATURE_LIST) + CertList->SignatureHeaderSize); - CertCount = (CertList->SignatureListSize - sizeof (EFI_SIGNATURE_LIST) - CertList->SignatureHeaderSize) / CertList->SignatureSize; + Cert = (EFI_SIGNATURE_DATA *)((UINT8 *)CertList + sizeof (EFI_SIGNATURE_LIST) + CertList->SignatureHeaderSize); + CertCount = (CertList->SignatureListSize - sizeof (EFI_SIGNATURE_LIST) - CertList->SignatureHeaderSize) / CertList->SignatureSize; for (Index = 0; Index < CertCount; Index++) { // // EfiTlsConfigDataTypeCACertificate @@ -510,11 +531,11 @@ TlsConfigCertificate ( goto FreeCACert; } - Cert = (EFI_SIGNATURE_DATA *) ((UINT8 *) Cert + CertList->SignatureSize); + Cert = (EFI_SIGNATURE_DATA *)((UINT8 *)Cert + CertList->SignatureSize); } ItemDataSize -= CertList->SignatureListSize; - CertList = (EFI_SIGNATURE_LIST *) ((UINT8 *) CertList + CertList->SignatureListSize); + CertList = (EFI_SIGNATURE_LIST *)((UINT8 *)CertList + CertList->SignatureListSize); } FreeCACert: @@ -537,12 +558,12 @@ FreeCACert: **/ EFI_STATUS TlsConfigCipherList ( - IN OUT HTTP_PROTOCOL *HttpInstance + IN OUT HTTP_PROTOCOL *HttpInstance ) { - EFI_STATUS Status; - UINT8 *CipherList; - UINTN CipherListSize; + EFI_STATUS Status; + UINT8 *CipherList; + UINTN CipherListSize; CipherList = NULL; CipherListSize = 0; @@ -550,13 +571,13 @@ TlsConfigCipherList ( // // Try to read the HttpTlsCipherList variable. // - Status = gRT->GetVariable ( - EDKII_HTTP_TLS_CIPHER_LIST_VARIABLE, - &gEdkiiHttpTlsCipherListGuid, - NULL, - &CipherListSize, - NULL - ); + Status = gRT->GetVariable ( + EDKII_HTTP_TLS_CIPHER_LIST_VARIABLE, + &gEdkiiHttpTlsCipherListGuid, + NULL, + &CipherListSize, + NULL + ); ASSERT (EFI_ERROR (Status)); if (Status != EFI_BUFFER_TOO_SMALL) { return Status; @@ -615,10 +636,10 @@ ON_EXIT: EFI_STATUS EFIAPI TlsConfigureSession ( - IN OUT HTTP_PROTOCOL *HttpInstance + IN OUT HTTP_PROTOCOL *HttpInstance ) { - EFI_STATUS Status; + EFI_STATUS Status; // // TlsConfigData initialization @@ -679,7 +700,7 @@ TlsConfigureSession ( // Tls Cipher List // Status = TlsConfigCipherList (HttpInstance); - if (EFI_ERROR (Status) && Status != EFI_NOT_FOUND) { + if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) { DEBUG ((DEBUG_ERROR, "TlsConfigCipherList: return %r error.\n", Status)); return Status; } @@ -725,13 +746,13 @@ ERROR: EFI_STATUS EFIAPI TlsCommonTransmit ( - IN OUT HTTP_PROTOCOL *HttpInstance, - IN NET_BUF *Packet + IN OUT HTTP_PROTOCOL *HttpInstance, + IN NET_BUF *Packet ) { - EFI_STATUS Status; - VOID *Data; - UINTN Size; + EFI_STATUS Status; + VOID *Data; + UINTN Size; if ((HttpInstance == NULL) || (Packet == NULL)) { return EFI_INVALID_PARAMETER; @@ -751,29 +772,29 @@ TlsCommonTransmit ( } if (!HttpInstance->LocalAddressIsIPv6) { - ((EFI_TCP4_TRANSMIT_DATA *) Data)->Push = TRUE; - ((EFI_TCP4_TRANSMIT_DATA *) Data)->Urgent = FALSE; - ((EFI_TCP4_TRANSMIT_DATA *) Data)->DataLength = Packet->TotalSize; + ((EFI_TCP4_TRANSMIT_DATA *)Data)->Push = TRUE; + ((EFI_TCP4_TRANSMIT_DATA *)Data)->Urgent = FALSE; + ((EFI_TCP4_TRANSMIT_DATA *)Data)->DataLength = Packet->TotalSize; // // Build the fragment table. // - ((EFI_TCP4_TRANSMIT_DATA *) Data)->FragmentCount = Packet->BlockOpNum; + ((EFI_TCP4_TRANSMIT_DATA *)Data)->FragmentCount = Packet->BlockOpNum; NetbufBuildExt ( Packet, - (NET_FRAGMENT *) &((EFI_TCP4_TRANSMIT_DATA *) Data)->FragmentTable[0], - &((EFI_TCP4_TRANSMIT_DATA *) Data)->FragmentCount + (NET_FRAGMENT *)&((EFI_TCP4_TRANSMIT_DATA *)Data)->FragmentTable[0], + &((EFI_TCP4_TRANSMIT_DATA *)Data)->FragmentCount ); - HttpInstance->Tcp4TlsTxToken.Packet.TxData = (EFI_TCP4_TRANSMIT_DATA *) Data; + HttpInstance->Tcp4TlsTxToken.Packet.TxData = (EFI_TCP4_TRANSMIT_DATA *)Data; Status = EFI_DEVICE_ERROR; // // Transmit the packet. // - Status = HttpInstance->Tcp4->Transmit (HttpInstance->Tcp4, &HttpInstance->Tcp4TlsTxToken); + Status = HttpInstance->Tcp4->Transmit (HttpInstance->Tcp4, &HttpInstance->Tcp4TlsTxToken); if (EFI_ERROR (Status)) { goto ON_EXIT; } @@ -783,31 +804,31 @@ TlsCommonTransmit ( } HttpInstance->TlsIsTxDone = FALSE; - Status = HttpInstance->Tcp4TlsTxToken.CompletionToken.Status; + Status = HttpInstance->Tcp4TlsTxToken.CompletionToken.Status; } else { - ((EFI_TCP6_TRANSMIT_DATA *) Data)->Push = TRUE; - ((EFI_TCP6_TRANSMIT_DATA *) Data)->Urgent = FALSE; - ((EFI_TCP6_TRANSMIT_DATA *) Data)->DataLength = Packet->TotalSize; + ((EFI_TCP6_TRANSMIT_DATA *)Data)->Push = TRUE; + ((EFI_TCP6_TRANSMIT_DATA *)Data)->Urgent = FALSE; + ((EFI_TCP6_TRANSMIT_DATA *)Data)->DataLength = Packet->TotalSize; // // Build the fragment table. // - ((EFI_TCP6_TRANSMIT_DATA *) Data)->FragmentCount = Packet->BlockOpNum; + ((EFI_TCP6_TRANSMIT_DATA *)Data)->FragmentCount = Packet->BlockOpNum; NetbufBuildExt ( Packet, - (NET_FRAGMENT *) &((EFI_TCP6_TRANSMIT_DATA *) Data)->FragmentTable[0], - &((EFI_TCP6_TRANSMIT_DATA *) Data)->FragmentCount + (NET_FRAGMENT *)&((EFI_TCP6_TRANSMIT_DATA *)Data)->FragmentTable[0], + &((EFI_TCP6_TRANSMIT_DATA *)Data)->FragmentCount ); - HttpInstance->Tcp6TlsTxToken.Packet.TxData = (EFI_TCP6_TRANSMIT_DATA *) Data; + HttpInstance->Tcp6TlsTxToken.Packet.TxData = (EFI_TCP6_TRANSMIT_DATA *)Data; Status = EFI_DEVICE_ERROR; // // Transmit the packet. // - Status = HttpInstance->Tcp6->Transmit (HttpInstance->Tcp6, &HttpInstance->Tcp6TlsTxToken); + Status = HttpInstance->Tcp6->Transmit (HttpInstance->Tcp6, &HttpInstance->Tcp6TlsTxToken); if (EFI_ERROR (Status)) { goto ON_EXIT; } @@ -817,7 +838,7 @@ TlsCommonTransmit ( } HttpInstance->TlsIsTxDone = FALSE; - Status = HttpInstance->Tcp6TlsTxToken.CompletionToken.Status; + Status = HttpInstance->Tcp6TlsTxToken.CompletionToken.Status; } ON_EXIT: @@ -843,17 +864,17 @@ ON_EXIT: EFI_STATUS EFIAPI TlsCommonReceive ( - IN OUT HTTP_PROTOCOL *HttpInstance, - IN NET_BUF *Packet, - IN EFI_EVENT Timeout + IN OUT HTTP_PROTOCOL *HttpInstance, + IN NET_BUF *Packet, + IN EFI_EVENT Timeout ) { - EFI_TCP4_RECEIVE_DATA *Tcp4RxData; - EFI_TCP6_RECEIVE_DATA *Tcp6RxData; - EFI_STATUS Status; - NET_FRAGMENT *Fragment; - UINT32 FragmentCount; - UINT32 CurrentFragment; + EFI_TCP4_RECEIVE_DATA *Tcp4RxData; + EFI_TCP6_RECEIVE_DATA *Tcp6RxData; + EFI_STATUS Status; + NET_FRAGMENT *Fragment; + UINT32 FragmentCount; + UINT32 CurrentFragment; Tcp4RxData = NULL; Tcp6RxData = NULL; @@ -879,30 +900,33 @@ TlsCommonReceive ( if (Tcp4RxData == NULL) { return EFI_INVALID_PARAMETER; } - Tcp4RxData->FragmentCount = 1; + + Tcp4RxData->FragmentCount = 1; } else { Tcp6RxData = HttpInstance->Tcp6TlsRxToken.Packet.RxData; if (Tcp6RxData == NULL) { return EFI_INVALID_PARAMETER; } - Tcp6RxData->FragmentCount = 1; + + Tcp6RxData->FragmentCount = 1; } - CurrentFragment = 0; - Status = EFI_SUCCESS; + CurrentFragment = 0; + Status = EFI_SUCCESS; while (CurrentFragment < FragmentCount) { if (!HttpInstance->LocalAddressIsIPv6) { - Tcp4RxData->DataLength = Fragment[CurrentFragment].Len; - Tcp4RxData->FragmentTable[0].FragmentLength = Fragment[CurrentFragment].Len; - Tcp4RxData->FragmentTable[0].FragmentBuffer = Fragment[CurrentFragment].Bulk; - Status = HttpInstance->Tcp4->Receive (HttpInstance->Tcp4, &HttpInstance->Tcp4TlsRxToken); + Tcp4RxData->DataLength = Fragment[CurrentFragment].Len; + Tcp4RxData->FragmentTable[0].FragmentLength = Fragment[CurrentFragment].Len; + Tcp4RxData->FragmentTable[0].FragmentBuffer = Fragment[CurrentFragment].Bulk; + Status = HttpInstance->Tcp4->Receive (HttpInstance->Tcp4, &HttpInstance->Tcp4TlsRxToken); } else { - Tcp6RxData->DataLength = Fragment[CurrentFragment].Len; - Tcp6RxData->FragmentTable[0].FragmentLength = Fragment[CurrentFragment].Len; - Tcp6RxData->FragmentTable[0].FragmentBuffer = Fragment[CurrentFragment].Bulk; - Status = HttpInstance->Tcp6->Receive (HttpInstance->Tcp6, &HttpInstance->Tcp6TlsRxToken); + Tcp6RxData->DataLength = Fragment[CurrentFragment].Len; + Tcp6RxData->FragmentTable[0].FragmentLength = Fragment[CurrentFragment].Len; + Tcp6RxData->FragmentTable[0].FragmentBuffer = Fragment[CurrentFragment].Bulk; + Status = HttpInstance->Tcp6->Receive (HttpInstance->Tcp6, &HttpInstance->Tcp6TlsRxToken); } + if (EFI_ERROR (Status)) { goto ON_EXIT; } @@ -988,22 +1012,22 @@ ON_EXIT: EFI_STATUS EFIAPI TlsReceiveOnePdu ( - IN OUT HTTP_PROTOCOL *HttpInstance, - OUT NET_BUF **Pdu, - IN EFI_EVENT Timeout + IN OUT HTTP_PROTOCOL *HttpInstance, + OUT NET_BUF **Pdu, + IN EFI_EVENT Timeout ) { - EFI_STATUS Status; + EFI_STATUS Status; - LIST_ENTRY *NbufList; + LIST_ENTRY *NbufList; - UINT32 Len; + UINT32 Len; - NET_BUF *PduHdr; - UINT8 *Header; - TLS_RECORD_HEADER RecordHeader; + NET_BUF *PduHdr; + UINT8 *Header; + TLS_RECORD_HEADER RecordHeader; - NET_BUF *DataSeg; + NET_BUF *DataSeg; NbufList = NULL; PduHdr = NULL; @@ -1020,8 +1044,8 @@ TlsReceiveOnePdu ( // // Allocate buffer to receive one TLS header. // - Len = TLS_RECORD_HEADER_LENGTH; - PduHdr = NetbufAlloc (Len); + Len = TLS_RECORD_HEADER_LENGTH; + PduHdr = NetbufAlloc (Len); if (PduHdr == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; @@ -1041,23 +1065,24 @@ TlsReceiveOnePdu ( goto ON_EXIT; } - RecordHeader = *(TLS_RECORD_HEADER *) Header; - if ((RecordHeader.ContentType == TlsContentTypeHandshake || - RecordHeader.ContentType == TlsContentTypeAlert || - RecordHeader.ContentType == TlsContentTypeChangeCipherSpec || - RecordHeader.ContentType == TlsContentTypeApplicationData) && - (RecordHeader.Version.Major == 0x03) && /// Major versions are same. - (RecordHeader.Version.Minor == TLS10_PROTOCOL_VERSION_MINOR || - RecordHeader.Version.Minor ==TLS11_PROTOCOL_VERSION_MINOR || - RecordHeader.Version.Minor == TLS12_PROTOCOL_VERSION_MINOR) - ) { + RecordHeader = *(TLS_RECORD_HEADER *)Header; + if (((RecordHeader.ContentType == TlsContentTypeHandshake) || + (RecordHeader.ContentType == TlsContentTypeAlert) || + (RecordHeader.ContentType == TlsContentTypeChangeCipherSpec) || + (RecordHeader.ContentType == TlsContentTypeApplicationData)) && + (RecordHeader.Version.Major == 0x03) && /// Major versions are same. + ((RecordHeader.Version.Minor == TLS10_PROTOCOL_VERSION_MINOR) || + (RecordHeader.Version.Minor == TLS11_PROTOCOL_VERSION_MINOR) || + (RecordHeader.Version.Minor == TLS12_PROTOCOL_VERSION_MINOR)) + ) + { InsertTailList (NbufList, &PduHdr->List); } else { Status = EFI_PROTOCOL_ERROR; goto ON_EXIT; } - Len = SwapBytes16(RecordHeader.Length); + Len = SwapBytes16 (RecordHeader.Length); if (Len == 0) { // // No TLS payload. @@ -1122,37 +1147,37 @@ ON_EXIT: EFI_STATUS EFIAPI TlsConnectSession ( - IN HTTP_PROTOCOL *HttpInstance, - IN EFI_EVENT Timeout + IN HTTP_PROTOCOL *HttpInstance, + IN EFI_EVENT Timeout ) { - EFI_STATUS Status; - UINT8 *BufferOut; - UINTN BufferOutSize; - NET_BUF *PacketOut; - UINT8 *DataOut; - NET_BUF *Pdu; - UINT8 *BufferIn; - UINTN BufferInSize; - UINT8 *GetSessionDataBuffer; - UINTN GetSessionDataBufferSize; - - BufferOut = NULL; - PacketOut = NULL; - DataOut = NULL; - Pdu = NULL; - BufferIn = NULL; + EFI_STATUS Status; + UINT8 *BufferOut; + UINTN BufferOutSize; + NET_BUF *PacketOut; + UINT8 *DataOut; + NET_BUF *Pdu; + UINT8 *BufferIn; + UINTN BufferInSize; + UINT8 *GetSessionDataBuffer; + UINTN GetSessionDataBufferSize; + + BufferOut = NULL; + PacketOut = NULL; + DataOut = NULL; + Pdu = NULL; + BufferIn = NULL; // // Initialize TLS state. // HttpInstance->TlsSessionState = EfiTlsSessionNotStarted; - Status = HttpInstance->Tls->SetSessionData ( - HttpInstance->Tls, - EfiTlsSessionState, - &(HttpInstance->TlsSessionState), - sizeof (EFI_TLS_SESSION_STATE) - ); + Status = HttpInstance->Tls->SetSessionData ( + HttpInstance->Tls, + EfiTlsSessionState, + &(HttpInstance->TlsSessionState), + sizeof (EFI_TLS_SESSION_STATE) + ); if (EFI_ERROR (Status)) { return Status; } @@ -1161,7 +1186,7 @@ TlsConnectSession ( // Create ClientHello // BufferOutSize = DEF_BUF_LEN; - BufferOut = AllocateZeroPool (BufferOutSize); + BufferOut = AllocateZeroPool (BufferOutSize); if (BufferOut == NULL) { Status = EFI_OUT_OF_RESOURCES; return Status; @@ -1190,6 +1215,7 @@ TlsConnectSession ( &BufferOutSize ); } + if (EFI_ERROR (Status)) { FreePool (BufferOut); return Status; @@ -1198,8 +1224,8 @@ TlsConnectSession ( // // Transmit ClientHello // - PacketOut = NetbufAlloc ((UINT32) BufferOutSize); - DataOut = NetbufAllocSpace (PacketOut, (UINT32) BufferOutSize, NET_BUF_TAIL); + PacketOut = NetbufAlloc ((UINT32)BufferOutSize); + DataOut = NetbufAllocSpace (PacketOut, (UINT32)BufferOutSize, NET_BUF_TAIL); if (DataOut == NULL) { FreePool (BufferOut); return EFI_OUT_OF_RESOURCES; @@ -1215,8 +1241,9 @@ TlsConnectSession ( return Status; } - while(HttpInstance->TlsSessionState != EfiTlsSessionDataTransferring && \ - ((Timeout == NULL) || EFI_ERROR (gBS->CheckEvent (Timeout)))) { + while (HttpInstance->TlsSessionState != EfiTlsSessionDataTransferring && \ + ((Timeout == NULL) || EFI_ERROR (gBS->CheckEvent (Timeout)))) + { // // Receive one TLS record. // @@ -1226,7 +1253,7 @@ TlsConnectSession ( } BufferInSize = Pdu->TotalSize; - BufferIn = AllocateZeroPool (BufferInSize); + BufferIn = AllocateZeroPool (BufferInSize); if (BufferIn == NULL) { NetbufFree (Pdu); Status = EFI_OUT_OF_RESOURCES; @@ -1241,7 +1268,7 @@ TlsConnectSession ( // Handle Receive data. // BufferOutSize = DEF_BUF_LEN; - BufferOut = AllocateZeroPool (BufferOutSize); + BufferOut = AllocateZeroPool (BufferOutSize); if (BufferOut == NULL) { Status = EFI_OUT_OF_RESOURCES; return Status; @@ -1255,21 +1282,21 @@ TlsConnectSession ( &BufferOutSize ); if (Status == EFI_BUFFER_TOO_SMALL) { - FreePool (BufferOut); - BufferOut = AllocateZeroPool (BufferOutSize); - if (BufferOut == NULL) { - FreePool (BufferIn); - Status = EFI_OUT_OF_RESOURCES; - return Status; - } - - Status = HttpInstance->Tls->BuildResponsePacket ( - HttpInstance->Tls, - BufferIn, - BufferInSize, - BufferOut, - &BufferOutSize - ); + FreePool (BufferOut); + BufferOut = AllocateZeroPool (BufferOutSize); + if (BufferOut == NULL) { + FreePool (BufferIn); + Status = EFI_OUT_OF_RESOURCES; + return Status; + } + + Status = HttpInstance->Tls->BuildResponsePacket ( + HttpInstance->Tls, + BufferIn, + BufferInSize, + BufferOut, + &BufferOutSize + ); } FreePool (BufferIn); @@ -1283,8 +1310,8 @@ TlsConnectSession ( // // Transmit the response packet. // - PacketOut = NetbufAlloc ((UINT32) BufferOutSize); - DataOut = NetbufAllocSpace (PacketOut, (UINT32) BufferOutSize, NET_BUF_TAIL); + PacketOut = NetbufAlloc ((UINT32)BufferOutSize); + DataOut = NetbufAllocSpace (PacketOut, (UINT32)BufferOutSize, NET_BUF_TAIL); if (DataOut == NULL) { FreePool (BufferOut); return EFI_OUT_OF_RESOURCES; @@ -1308,7 +1335,7 @@ TlsConnectSession ( // Get the session state, then decide whether need to continue handle received packet. // GetSessionDataBufferSize = DEF_BUF_LEN; - GetSessionDataBuffer = AllocateZeroPool (GetSessionDataBufferSize); + GetSessionDataBuffer = AllocateZeroPool (GetSessionDataBufferSize); if (GetSessionDataBuffer == NULL) { Status = EFI_OUT_OF_RESOURCES; return Status; @@ -1321,31 +1348,32 @@ TlsConnectSession ( &GetSessionDataBufferSize ); if (Status == EFI_BUFFER_TOO_SMALL) { - FreePool (GetSessionDataBuffer); - GetSessionDataBuffer = AllocateZeroPool (GetSessionDataBufferSize); - if (GetSessionDataBuffer == NULL) { - Status = EFI_OUT_OF_RESOURCES; - return Status; - } - - Status = HttpInstance->Tls->GetSessionData ( - HttpInstance->Tls, - EfiTlsSessionState, - GetSessionDataBuffer, - &GetSessionDataBufferSize - ); + FreePool (GetSessionDataBuffer); + GetSessionDataBuffer = AllocateZeroPool (GetSessionDataBufferSize); + if (GetSessionDataBuffer == NULL) { + Status = EFI_OUT_OF_RESOURCES; + return Status; + } + + Status = HttpInstance->Tls->GetSessionData ( + HttpInstance->Tls, + EfiTlsSessionState, + GetSessionDataBuffer, + &GetSessionDataBufferSize + ); } + if (EFI_ERROR (Status)) { - FreePool(GetSessionDataBuffer); + FreePool (GetSessionDataBuffer); return Status; } - ASSERT(GetSessionDataBufferSize == sizeof (EFI_TLS_SESSION_STATE)); - HttpInstance->TlsSessionState = *(EFI_TLS_SESSION_STATE *) GetSessionDataBuffer; + ASSERT (GetSessionDataBufferSize == sizeof (EFI_TLS_SESSION_STATE)); + HttpInstance->TlsSessionState = *(EFI_TLS_SESSION_STATE *)GetSessionDataBuffer; FreePool (GetSessionDataBuffer); - if(HttpInstance->TlsSessionState == EfiTlsSessionError) { + if (HttpInstance->TlsSessionState == EfiTlsSessionError) { return EFI_ABORTED; } } @@ -1371,16 +1399,16 @@ TlsConnectSession ( EFI_STATUS EFIAPI TlsCloseSession ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ) { - EFI_STATUS Status; + EFI_STATUS Status; - UINT8 *BufferOut; - UINTN BufferOutSize; + UINT8 *BufferOut; + UINTN BufferOutSize; - NET_BUF *PacketOut; - UINT8 *DataOut; + NET_BUF *PacketOut; + UINT8 *DataOut; Status = EFI_SUCCESS; BufferOut = NULL; @@ -1404,7 +1432,7 @@ TlsCloseSession ( } BufferOutSize = DEF_BUF_LEN; - BufferOut = AllocateZeroPool (BufferOutSize); + BufferOut = AllocateZeroPool (BufferOutSize); if (BufferOut == NULL) { Status = EFI_OUT_OF_RESOURCES; return Status; @@ -1439,8 +1467,8 @@ TlsCloseSession ( return Status; } - PacketOut = NetbufAlloc ((UINT32) BufferOutSize); - DataOut = NetbufAllocSpace (PacketOut, (UINT32) BufferOutSize, NET_BUF_TAIL); + PacketOut = NetbufAlloc ((UINT32)BufferOutSize); + DataOut = NetbufAllocSpace (PacketOut, (UINT32)BufferOutSize, NET_BUF_TAIL); if (DataOut == NULL) { FreePool (BufferOut); return EFI_OUT_OF_RESOURCES; @@ -1482,28 +1510,28 @@ TlsCloseSession ( EFI_STATUS EFIAPI TlsProcessMessage ( - IN HTTP_PROTOCOL *HttpInstance, - IN UINT8 *Message, - IN UINTN MessageSize, - IN EFI_TLS_CRYPT_MODE ProcessMode, - IN OUT NET_FRAGMENT *Fragment + IN HTTP_PROTOCOL *HttpInstance, + IN UINT8 *Message, + IN UINTN MessageSize, + IN EFI_TLS_CRYPT_MODE ProcessMode, + IN OUT NET_FRAGMENT *Fragment ) { - EFI_STATUS Status; - UINT8 *Buffer; - UINT32 BufferSize; - UINT32 BytesCopied; - EFI_TLS_FRAGMENT_DATA *FragmentTable; - UINT32 FragmentCount; - EFI_TLS_FRAGMENT_DATA *OriginalFragmentTable; - UINTN Index; - - Status = EFI_SUCCESS; - Buffer = NULL; - BufferSize = 0; - BytesCopied = 0; - FragmentTable = NULL; - OriginalFragmentTable = NULL; + EFI_STATUS Status; + UINT8 *Buffer; + UINT32 BufferSize; + UINT32 BytesCopied; + EFI_TLS_FRAGMENT_DATA *FragmentTable; + UINT32 FragmentCount; + EFI_TLS_FRAGMENT_DATA *OriginalFragmentTable; + UINTN Index; + + Status = EFI_SUCCESS; + Buffer = NULL; + BufferSize = 0; + BytesCopied = 0; + FragmentTable = NULL; + OriginalFragmentTable = NULL; // // Rebuild fragment table from BufferIn. @@ -1515,7 +1543,7 @@ TlsProcessMessage ( goto ON_EXIT; } - FragmentTable->FragmentLength = (UINT32) MessageSize; + FragmentTable->FragmentLength = (UINT32)MessageSize; FragmentTable->FragmentBuffer = Message; // @@ -1575,9 +1603,10 @@ TlsProcessMessage ( ON_EXIT: if (OriginalFragmentTable != NULL) { - if( FragmentTable == OriginalFragmentTable) { + if ( FragmentTable == OriginalFragmentTable) { FragmentTable = NULL; } + FreePool (OriginalFragmentTable); OriginalFragmentTable = NULL; } @@ -1609,23 +1638,23 @@ ON_EXIT: EFI_STATUS EFIAPI HttpsReceive ( - IN HTTP_PROTOCOL *HttpInstance, - IN OUT NET_FRAGMENT *Fragment, - IN EFI_EVENT Timeout + IN HTTP_PROTOCOL *HttpInstance, + IN OUT NET_FRAGMENT *Fragment, + IN EFI_EVENT Timeout ) { - EFI_STATUS Status; - NET_BUF *Pdu; - TLS_RECORD_HEADER RecordHeader; - UINT8 *BufferIn; - UINTN BufferInSize; - NET_FRAGMENT TempFragment; - UINT8 *BufferOut; - UINTN BufferOutSize; - NET_BUF *PacketOut; - UINT8 *DataOut; - UINT8 *GetSessionDataBuffer; - UINTN GetSessionDataBufferSize; + EFI_STATUS Status; + NET_BUF *Pdu; + TLS_RECORD_HEADER RecordHeader; + UINT8 *BufferIn; + UINTN BufferInSize; + NET_FRAGMENT TempFragment; + UINT8 *BufferOut; + UINTN BufferOutSize; + NET_BUF *PacketOut; + UINT8 *DataOut; + UINT8 *GetSessionDataBuffer; + UINTN GetSessionDataBufferSize; Status = EFI_SUCCESS; Pdu = NULL; @@ -1647,28 +1676,29 @@ HttpsReceive ( } BufferInSize = Pdu->TotalSize; - BufferIn = AllocateZeroPool (BufferInSize); + BufferIn = AllocateZeroPool (BufferInSize); if (BufferIn == NULL) { Status = EFI_OUT_OF_RESOURCES; NetbufFree (Pdu); return Status; } - NetbufCopy (Pdu, 0, (UINT32) BufferInSize, BufferIn); + NetbufCopy (Pdu, 0, (UINT32)BufferInSize, BufferIn); NetbufFree (Pdu); // // Handle Receive data. // - RecordHeader = *(TLS_RECORD_HEADER *) BufferIn; + RecordHeader = *(TLS_RECORD_HEADER *)BufferIn; if ((RecordHeader.ContentType == TlsContentTypeApplicationData) && - (RecordHeader.Version.Major == 0x03) && - (RecordHeader.Version.Minor == TLS10_PROTOCOL_VERSION_MINOR || - RecordHeader.Version.Minor == TLS11_PROTOCOL_VERSION_MINOR || - RecordHeader.Version.Minor == TLS12_PROTOCOL_VERSION_MINOR) - ) { + (RecordHeader.Version.Major == 0x03) && + ((RecordHeader.Version.Minor == TLS10_PROTOCOL_VERSION_MINOR) || + (RecordHeader.Version.Minor == TLS11_PROTOCOL_VERSION_MINOR) || + (RecordHeader.Version.Minor == TLS12_PROTOCOL_VERSION_MINOR)) + ) + { // // Decrypt Packet. // @@ -1689,7 +1719,7 @@ HttpsReceive ( // BuildResponsePacket() will be called to generate Error Alert message and send it out. // BufferOutSize = DEF_BUF_LEN; - BufferOut = AllocateZeroPool (BufferOutSize); + BufferOut = AllocateZeroPool (BufferOutSize); if (BufferOut == NULL) { Status = EFI_OUT_OF_RESOURCES; return Status; @@ -1718,14 +1748,15 @@ HttpsReceive ( &BufferOutSize ); } + if (EFI_ERROR (Status)) { - FreePool(BufferOut); + FreePool (BufferOut); return Status; } if (BufferOutSize != 0) { PacketOut = NetbufAlloc ((UINT32)BufferOutSize); - DataOut = NetbufAllocSpace (PacketOut, (UINT32) BufferOutSize, NET_BUF_TAIL); + DataOut = NetbufAllocSpace (PacketOut, (UINT32)BufferOutSize, NET_BUF_TAIL); if (DataOut == NULL) { FreePool (BufferOut); return EFI_OUT_OF_RESOURCES; @@ -1738,7 +1769,7 @@ HttpsReceive ( NetbufFree (PacketOut); } - FreePool(BufferOut); + FreePool (BufferOut); if (EFI_ERROR (Status)) { return Status; @@ -1753,10 +1784,10 @@ HttpsReceive ( // // Parsing buffer. // - ASSERT (((TLS_RECORD_HEADER *) (TempFragment.Bulk))->ContentType == TlsContentTypeApplicationData); + ASSERT (((TLS_RECORD_HEADER *)(TempFragment.Bulk))->ContentType == TlsContentTypeApplicationData); - BufferInSize = ((TLS_RECORD_HEADER *) (TempFragment.Bulk))->Length; - BufferIn = AllocateZeroPool (BufferInSize); + BufferInSize = ((TLS_RECORD_HEADER *)(TempFragment.Bulk))->Length; + BufferIn = AllocateZeroPool (BufferInSize); if (BufferIn == NULL) { Status = EFI_OUT_OF_RESOURCES; return Status; @@ -1768,15 +1799,15 @@ HttpsReceive ( // Free the buffer in TempFragment. // FreePool (TempFragment.Bulk); - } else if ((RecordHeader.ContentType == TlsContentTypeAlert) && - (RecordHeader.Version.Major == 0x03) && - (RecordHeader.Version.Minor == TLS10_PROTOCOL_VERSION_MINOR || - RecordHeader.Version.Minor == TLS11_PROTOCOL_VERSION_MINOR || - RecordHeader.Version.Minor == TLS12_PROTOCOL_VERSION_MINOR) - ) { + (RecordHeader.Version.Major == 0x03) && + ((RecordHeader.Version.Minor == TLS10_PROTOCOL_VERSION_MINOR) || + (RecordHeader.Version.Minor == TLS11_PROTOCOL_VERSION_MINOR) || + (RecordHeader.Version.Minor == TLS12_PROTOCOL_VERSION_MINOR)) + ) + { BufferOutSize = DEF_BUF_LEN; - BufferOut = AllocateZeroPool (BufferOutSize); + BufferOut = AllocateZeroPool (BufferOutSize); if (BufferOut == NULL) { FreePool (BufferIn); Status = EFI_OUT_OF_RESOURCES; @@ -1816,8 +1847,8 @@ HttpsReceive ( } if (BufferOutSize != 0) { - PacketOut = NetbufAlloc ((UINT32) BufferOutSize); - DataOut = NetbufAllocSpace (PacketOut, (UINT32) BufferOutSize, NET_BUF_TAIL); + PacketOut = NetbufAlloc ((UINT32)BufferOutSize); + DataOut = NetbufAllocSpace (PacketOut, (UINT32)BufferOutSize, NET_BUF_TAIL); if (DataOut == NULL) { FreePool (BufferOut); return EFI_OUT_OF_RESOURCES; @@ -1836,7 +1867,7 @@ HttpsReceive ( // Get the session state. // GetSessionDataBufferSize = DEF_BUF_LEN; - GetSessionDataBuffer = AllocateZeroPool (GetSessionDataBufferSize); + GetSessionDataBuffer = AllocateZeroPool (GetSessionDataBufferSize); if (GetSessionDataBuffer == NULL) { Status = EFI_OUT_OF_RESOURCES; return Status; @@ -1849,41 +1880,42 @@ HttpsReceive ( &GetSessionDataBufferSize ); if (Status == EFI_BUFFER_TOO_SMALL) { - FreePool (GetSessionDataBuffer); - GetSessionDataBuffer = AllocateZeroPool (GetSessionDataBufferSize); - if (GetSessionDataBuffer == NULL) { - Status = EFI_OUT_OF_RESOURCES; - return Status; - } - - Status = HttpInstance->Tls->GetSessionData ( - HttpInstance->Tls, - EfiTlsSessionState, - GetSessionDataBuffer, - &GetSessionDataBufferSize - ); + FreePool (GetSessionDataBuffer); + GetSessionDataBuffer = AllocateZeroPool (GetSessionDataBufferSize); + if (GetSessionDataBuffer == NULL) { + Status = EFI_OUT_OF_RESOURCES; + return Status; + } + + Status = HttpInstance->Tls->GetSessionData ( + HttpInstance->Tls, + EfiTlsSessionState, + GetSessionDataBuffer, + &GetSessionDataBufferSize + ); } + if (EFI_ERROR (Status)) { FreePool (GetSessionDataBuffer); return Status; } - ASSERT(GetSessionDataBufferSize == sizeof (EFI_TLS_SESSION_STATE)); - HttpInstance->TlsSessionState = *(EFI_TLS_SESSION_STATE *) GetSessionDataBuffer; + ASSERT (GetSessionDataBufferSize == sizeof (EFI_TLS_SESSION_STATE)); + HttpInstance->TlsSessionState = *(EFI_TLS_SESSION_STATE *)GetSessionDataBuffer; FreePool (GetSessionDataBuffer); - if(HttpInstance->TlsSessionState == EfiTlsSessionError) { + if (HttpInstance->TlsSessionState == EfiTlsSessionError) { DEBUG ((DEBUG_ERROR, "TLS Session State Error!\n")); return EFI_ABORTED; } - BufferIn = NULL; + BufferIn = NULL; BufferInSize = 0; } Fragment->Bulk = BufferIn; - Fragment->Len = (UINT32) BufferInSize; + Fragment->Len = (UINT32)BufferInSize; return Status; }