Hi Kai,

Not sure why, but this fails to apply for me:

Applying: Revert "ovmf: Fix CVE-2023-45237"
Using index info to reconstruct a base tree...
error: patch failed: meta/recipes-core/ovmf/ovmf/CVE-2023-45237-0001.patch:1
error: meta/recipes-core/ovmf/ovmf/CVE-2023-45237-0001.patch: patch
does not apply
error: patch failed: meta/recipes-core/ovmf/ovmf/CVE-2023-45237-0002.patch:1
error: meta/recipes-core/ovmf/ovmf/CVE-2023-45237-0002.patch: patch
does not apply
error: Did you hand edit your patch?
It does not apply to blobs recorded in its index.
Patch failed at 0001 Revert "ovmf: Fix CVE-2023-45237"

Steve

On Wed, Feb 19, 2025 at 2:22 AM Kai Kang via lists.openembedded.org
<[email protected]> wrote:
>
> From: Kai Kang <[email protected]>
>
> This reverts commit 4c2d3e37308cac98614dfafed79b7323423af8bc.
>
> The fix for CVE-2023-45237 causes ovmf firmware not support pxe boot
> any more and no boot item in OVMF menu such as
>
>     UEFI PXEv4 (MAC address)
>
> It has not been fixed by ovmf upstream and an issue has been created on
>
> https://github.com/tianocore/tianocore.github.io/issues/82
>
> Revert the fixes for now.
>
> Signed-off-by: Kai Kang <[email protected]>
> ---
>
> Please add option `--keep-cr` when invoke `git am`.
>
>  .../ovmf/ovmf/CVE-2023-45237-0001.patch       |   78 -
>  .../ovmf/ovmf/CVE-2023-45237-0002.patch       | 1288 -----------------
>  meta/recipes-core/ovmf/ovmf_git.bb            |    2 -
>  3 files changed, 1368 deletions(-)
>  delete mode 100644 meta/recipes-core/ovmf/ovmf/CVE-2023-45237-0001.patch
>  delete mode 100644 meta/recipes-core/ovmf/ovmf/CVE-2023-45237-0002.patch
>
> diff --git a/meta/recipes-core/ovmf/ovmf/CVE-2023-45237-0001.patch 
> b/meta/recipes-core/ovmf/ovmf/CVE-2023-45237-0001.patch
> deleted file mode 100644
> index d1dcb8dc44..0000000000
> --- a/meta/recipes-core/ovmf/ovmf/CVE-2023-45237-0001.patch
> +++ /dev/null
> @@ -1,78 +0,0 @@
> -From cf07238e5fa4f8b1138ac1c9e80530b4d4e59f1c Mon Sep 17 00:00:00 2001
> -From: Pierre Gondois <[email protected]>
> -Date: Fri, 11 Aug 2023 16:33:06 +0200
> -Subject: [PATCH] MdePkg/Rng: Add GUID to describe Arm Rndr Rng algorithms
> -
> -BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4441
> -
> -The EFI_RNG_PROTOCOL can rely on the RngLib. The RngLib has multiple
> -implementations, some of them are unsafe (e.g. BaseRngLibTimerLib).
> -To allow the RngDxe to detect when such implementation is used,
> -a GetRngGuid() function is added in a following patch.
> -
> -Prepare GetRngGuid() return values and add a gEfiRngAlgorithmArmRndr
> -to describe a Rng algorithm accessed through Arm's RNDR instruction.
> -[1] states that the implementation of this algorithm should be
> -compliant to NIST SP900-80. The compliance is not guaranteed.
> -
> -[1] Arm Architecture Reference Manual Armv8, for A-profile architecture
> -sK12.1 'Properties of the generated random number'
> -
> -Signed-off-by: Pierre Gondois <[email protected]>
> -Reviewed-by: Sami Mujawar <[email protected]>
> -Reviewed-by: Liming Gao <[email protected]>
> -Acked-by: Ard Biesheuvel <[email protected]>
> -Tested-by: Kun Qin <[email protected]>
> -
> -CVE: CVE-2023-45237
> -
> -Upstream-Status: Backport 
> [https://github.com/tianocore/edk2/commit/cf07238e5fa4f8b1138ac1c9e80530b4d4e59f1c]
> -
> -Signed-off-by: Soumya Sambu <[email protected]>
> ----
> - MdePkg/Include/Protocol/Rng.h | 10 ++++++++++
> - MdePkg/MdePkg.dec             |  1 +
> - 2 files changed, 11 insertions(+)
> -
> -diff --git a/MdePkg/Include/Protocol/Rng.h b/MdePkg/Include/Protocol/Rng.h
> -index baf425587b..38bde53240 100644
> ---- a/MdePkg/Include/Protocol/Rng.h
> -+++ b/MdePkg/Include/Protocol/Rng.h
> -@@ -67,6 +67,15 @@ typedef EFI_GUID EFI_RNG_ALGORITHM;
> -   { \
> -     0xe43176d7, 0xb6e8, 0x4827, {0xb7, 0x84, 0x7f, 0xfd, 0xc4, 0xb6, 0x85, 
> 0x61 } \
> -   }
> -+///
> -+/// The Arm Architecture states the RNDR that the DRBG algorithm should be 
> compliant
> -+/// with NIST SP800-90A, while not mandating a particular algorithm, so as 
> to be
> -+/// inclusive of different geographies.
> -+///
> -+#define EFI_RNG_ALGORITHM_ARM_RNDR \
> -+  { \
> -+    0x43d2fde3, 0x9d4e, 0x4d79,  {0x02, 0x96, 0xa8, 0x9b, 0xca, 0x78, 0x08, 
> 0x41} \
> -+  }
> -
> - /**
> -   Returns information about the random number generation implementation.
> -@@ -146,5 +155,6 @@ extern EFI_GUID  gEfiRngAlgorithmSp80090Ctr256Guid;
> - extern EFI_GUID  gEfiRngAlgorithmX9313DesGuid;
> - extern EFI_GUID  gEfiRngAlgorithmX931AesGuid;
> - extern EFI_GUID  gEfiRngAlgorithmRaw;
> -+extern EFI_GUID  gEfiRngAlgorithmArmRndr;
> -
> - #endif
> -diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec
> -index 59b405928b..a449dbc556 100644
> ---- a/MdePkg/MdePkg.dec
> -+++ b/MdePkg/MdePkg.dec
> -@@ -594,6 +594,7 @@
> -   gEfiRngAlgorithmX9313DesGuid       = { 0x63c4785a, 0xca34, 0x4012, {0xa3, 
> 0xc8, 0x0b, 0x6a, 0x32, 0x4f, 0x55, 0x46 }}
> -   gEfiRngAlgorithmX931AesGuid        = { 0xacd03321, 0x777e, 0x4d3d, {0xb1, 
> 0xc8, 0x20, 0xcf, 0xd8, 0x88, 0x20, 0xc9 }}
> -   gEfiRngAlgorithmRaw                = { 0xe43176d7, 0xb6e8, 0x4827, {0xb7, 
> 0x84, 0x7f, 0xfd, 0xc4, 0xb6, 0x85, 0x61 }}
> -+  gEfiRngAlgorithmArmRndr            = { 0x43d2fde3, 0x9d4e, 0x4d79, {0x02, 
> 0x96, 0xa8, 0x9b, 0xca, 0x78, 0x08, 0x41 }}
> -
> -   ## Include/Protocol/AdapterInformation.h
> -   gEfiAdapterInfoMediaStateGuid       = { 0xD7C74207, 0xA831, 0x4A26, 
> {0xB1, 0xF5, 0xD1, 0x93, 0x06, 0x5C, 0xE8, 0xB6 }}
> ---
> -2.40.0
> -
> diff --git a/meta/recipes-core/ovmf/ovmf/CVE-2023-45237-0002.patch 
> b/meta/recipes-core/ovmf/ovmf/CVE-2023-45237-0002.patch
> deleted file mode 100644
> index 722a6cd530..0000000000
> --- a/meta/recipes-core/ovmf/ovmf/CVE-2023-45237-0002.patch
> +++ /dev/null
> @@ -1,1288 +0,0 @@
> -From 4c4ceb2ceb80c42fd5545b2a4bd80321f07f4345 Mon Sep 17 00:00:00 2001
> -From: Doug Flick <[email protected]>
> -Date: Wed, 8 May 2024 22:56:28 -0700
> -Subject: [PATCH] NetworkPkg: SECURITY PATCH CVE-2023-45237
> -
> -REF:https://bugzilla.tianocore.org/show_bug.cgi?id=4542
> -
> -Bug Overview:
> -PixieFail Bug #9
> -CVE-2023-45237
> -CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
> -CWE-338 Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
> -
> -Use of a Weak PseudoRandom Number Generator
> -
> -Change Overview:
> -
> -Updates all Instances of NET_RANDOM (NetRandomInitSeed ()) to either
> -
> ->
> -> EFI_STATUS
> -> EFIAPI
> -> PseudoRandomU32 (
> ->  OUT UINT32  *Output
> ->  );
> ->
> -
> -or (depending on the use case)
> -
> ->
> -> EFI_STATUS
> -> EFIAPI
> -> PseudoRandom (
> ->  OUT  VOID   *Output,
> ->  IN   UINTN  OutputLength
> ->  );
> ->
> -
> -This is because the use of
> -
> -Example:
> -
> -The following code snippet PseudoRandomU32 () function is used:
> -
> ->
> -> UINT32         Random;
> ->
> -> Status = PseudoRandomU32 (&Random);
> -> if (EFI_ERROR (Status)) {
> ->   DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n",
> -__func__, Status));
> ->   return Status;
> -> }
> ->
> -
> -This also introduces a new PCD to enable/disable the use of the
> -secure implementation of algorithms for PseudoRandom () and
> -instead depend on the default implementation. This may be required for
> -some platforms where the UEFI Spec defined algorithms are not available.
> -
> ->
> -> PcdEnforceSecureRngAlgorithms
> ->
> -
> -If the platform does not have any one of the UEFI defined
> -secure RNG algorithms then the driver will assert.
> -
> -Cc: Saloni Kasbekar <[email protected]>
> -Cc: Zachary Clark-williams <[email protected]>
> -
> -Signed-off-by: Doug Flick [MSFT] <[email protected]>
> -Reviewed-by: Saloni Kasbekar <[email protected]>
> -
> -CVE: CVE-2023-45237
> -
> -Upstream-Status: Backport 
> [https://github.com/tianocore/edk2/commit/4c4ceb2ceb80c42fd5545b2a4bd80321f07f4345]
> -
> -Signed-off-by: Soumya Sambu <[email protected]>
> ----
> - NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c          |  10 +-
> - NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c          |  11 +-
> - NetworkPkg/DnsDxe/DnsDhcp.c                |  10 +-
> - NetworkPkg/DnsDxe/DnsImpl.c                |  11 +-
> - NetworkPkg/HttpBootDxe/HttpBootDhcp6.c     |  10 +-
> - NetworkPkg/IScsiDxe/IScsiCHAP.c            |  19 ++-
> - NetworkPkg/IScsiDxe/IScsiMisc.c            |  14 +--
> - NetworkPkg/IScsiDxe/IScsiMisc.h            |   6 +-
> - NetworkPkg/Include/Library/NetLib.h        |  40 +++++--
> - NetworkPkg/Ip4Dxe/Ip4Driver.c              |  10 +-
> - NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c          |   9 +-
> - NetworkPkg/Ip6Dxe/Ip6Driver.c              |  17 ++-
> - NetworkPkg/Ip6Dxe/Ip6If.c                  |  12 +-
> - NetworkPkg/Ip6Dxe/Ip6Mld.c                 |  12 +-
> - NetworkPkg/Ip6Dxe/Ip6Nd.c                  |  33 +++++-
> - NetworkPkg/Ip6Dxe/Ip6Nd.h                  |   8 +-
> - NetworkPkg/Library/DxeNetLib/DxeNetLib.c   | 130 ++++++++++++++++++---
> - NetworkPkg/Library/DxeNetLib/DxeNetLib.inf |  14 ++-
> - NetworkPkg/NetworkPkg.dec                  |   7 ++
> - NetworkPkg/SecurityFixes.yaml              |  39 +++++++
> - NetworkPkg/TcpDxe/TcpDriver.c              |  15 ++-
> - NetworkPkg/TcpDxe/TcpDxe.inf               |   3 +
> - NetworkPkg/Udp4Dxe/Udp4Driver.c            |  10 +-
> - NetworkPkg/Udp6Dxe/Udp6Driver.c            |  11 +-
> - NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c       |   9 +-
> - NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c       |  11 +-
> - NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c      |  12 +-
> - 27 files changed, 410 insertions(+), 83 deletions(-)
> -
> -diff --git a/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c 
> b/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c
> -index 8c37e93be3..892caee368 100644
> ---- a/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c
> -+++ b/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c
> -@@ -1,6 +1,7 @@
> - /** @file
> -
> - Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
> -+Copyright (c) Microsoft Corporation
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -189,6 +190,13 @@ Dhcp4CreateService (
> - {
> -   DHCP_SERVICE  *DhcpSb;
> -   EFI_STATUS    Status;
> -+  UINT32        Random;
> -+
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -
> -   *Service = NULL;
> -   DhcpSb   = AllocateZeroPool (sizeof (DHCP_SERVICE));
> -@@ -203,7 +211,7 @@ Dhcp4CreateService (
> -   DhcpSb->Image        = ImageHandle;
> -   InitializeListHead (&DhcpSb->Children);
> -   DhcpSb->DhcpState = Dhcp4Stopped;
> --  DhcpSb->Xid       = NET_RANDOM (NetRandomInitSeed ());
> -+  DhcpSb->Xid       = Random;
> -   CopyMem (
> -     &DhcpSb->ServiceBinding,
> -     &mDhcp4ServiceBindingTemplate,
> -diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c 
> b/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c
> -index b591a4605b..e7f2787a98 100644
> ---- a/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c
> -+++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c
> -@@ -3,7 +3,7 @@
> -   implementation for Dhcp6 Driver.
> -
> -   Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
> --
> -+  Copyright (c) Microsoft Corporation
> -   SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -123,6 +123,13 @@ Dhcp6CreateService (
> - {
> -   DHCP6_SERVICE  *Dhcp6Srv;
> -   EFI_STATUS     Status;
> -+  UINT32         Random;
> -+
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -
> -   *Service = NULL;
> -   Dhcp6Srv = AllocateZeroPool (sizeof (DHCP6_SERVICE));
> -@@ -147,7 +154,7 @@ Dhcp6CreateService (
> -   Dhcp6Srv->Signature  = DHCP6_SERVICE_SIGNATURE;
> -   Dhcp6Srv->Controller = Controller;
> -   Dhcp6Srv->Image      = ImageHandle;
> --  Dhcp6Srv->Xid        = (0xffffff & NET_RANDOM (NetRandomInitSeed ()));
> -+  Dhcp6Srv->Xid        = (0xffffff & Random);
> -
> -   CopyMem (
> -     &Dhcp6Srv->ServiceBinding,
> -diff --git a/NetworkPkg/DnsDxe/DnsDhcp.c b/NetworkPkg/DnsDxe/DnsDhcp.c
> -index 933565a32d..9eb3c1d2d8 100644
> ---- a/NetworkPkg/DnsDxe/DnsDhcp.c
> -+++ b/NetworkPkg/DnsDxe/DnsDhcp.c
> -@@ -2,6 +2,7 @@
> - Functions implementation related with DHCPv4/v6 for DNS driver.
> -
> - Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
> -+Copyright (c) Microsoft Corporation
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -277,6 +278,7 @@ GetDns4ServerFromDhcp4 (
> -   EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN  Token;
> -   BOOLEAN                           IsDone;
> -   UINTN                             Index;
> -+  UINT32                            Random;
> -
> -   Image      = Instance->Service->ImageHandle;
> -   Controller = Instance->Service->ControllerHandle;
> -@@ -292,6 +294,12 @@ GetDns4ServerFromDhcp4 (
> -   Data          = NULL;
> -   InterfaceInfo = NULL;
> -
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -+
> -   ZeroMem ((UINT8 *)ParaList, sizeof (ParaList));
> -
> -   ZeroMem (&MnpConfigData, sizeof (EFI_MANAGED_NETWORK_CONFIG_DATA));
> -@@ -467,7 +475,7 @@ GetDns4ServerFromDhcp4 (
> -
> -   Status = Dhcp4->Build (Dhcp4, &SeedPacket, 0, NULL, 2, ParaList, 
> &Token.Packet);
> -
> --  Token.Packet->Dhcp4.Header.Xid = HTONL (NET_RANDOM (NetRandomInitSeed 
> ()));
> -+  Token.Packet->Dhcp4.Header.Xid = Random;
> -
> -   Token.Packet->Dhcp4.Header.Reserved = HTONS ((UINT16)0x8000);
> -
> -diff --git a/NetworkPkg/DnsDxe/DnsImpl.c b/NetworkPkg/DnsDxe/DnsImpl.c
> -index d311812800..c2629bb8df 100644
> ---- a/NetworkPkg/DnsDxe/DnsImpl.c
> -+++ b/NetworkPkg/DnsDxe/DnsImpl.c
> -@@ -2,6 +2,7 @@
> - DnsDxe support functions implementation.
> -
> - Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>
> -+Copyright (c) Microsoft Corporation
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -1963,6 +1964,14 @@ ConstructDNSQuery (
> -   NET_FRAGMENT       Frag;
> -   DNS_HEADER         *DnsHeader;
> -   DNS_QUERY_SECTION  *DnsQuery;
> -+  EFI_STATUS         Status;
> -+  UINT32             Random;
> -+
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -
> -   //
> -   // Messages carried by UDP are restricted to 512 bytes (not counting the 
> IP
> -@@ -1977,7 +1986,7 @@ ConstructDNSQuery (
> -   // Fill header
> -   //
> -   DnsHeader                    = (DNS_HEADER *)Frag.Bulk;
> --  DnsHeader->Identification    = (UINT16)NET_RANDOM (NetRandomInitSeed ());
> -+  DnsHeader->Identification    = (UINT16)Random;
> -   DnsHeader->Flags.Uint16      = 0x0000;
> -   DnsHeader->Flags.Bits.RD     = 1;
> -   DnsHeader->Flags.Bits.OpCode = DNS_FLAGS_OPCODE_STANDARD;
> -diff --git a/NetworkPkg/HttpBootDxe/HttpBootDhcp6.c 
> b/NetworkPkg/HttpBootDxe/HttpBootDhcp6.c
> -index b22cef4ff5..f964515b0f 100644
> ---- a/NetworkPkg/HttpBootDxe/HttpBootDhcp6.c
> -+++ b/NetworkPkg/HttpBootDxe/HttpBootDhcp6.c
> -@@ -2,6 +2,7 @@
> -   Functions implementation related with DHCPv6 for HTTP boot driver.
> -
> - Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
> -+Copyright (c) Microsoft Corporation
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -951,6 +952,7 @@ HttpBootDhcp6Sarr (
> -   UINT32                    OptCount;
> -   UINT8                     Buffer[HTTP_BOOT_DHCP6_OPTION_MAX_SIZE];
> -   EFI_STATUS                Status;
> -+  UINT32                    Random;
> -
> -   Dhcp6 = Private->Dhcp6;
> -   ASSERT (Dhcp6 != NULL);
> -@@ -961,6 +963,12 @@ HttpBootDhcp6Sarr (
> -   OptCount = HttpBootBuildDhcp6Options (Private, OptList, Buffer);
> -   ASSERT (OptCount > 0);
> -
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -+
> -   Retransmit = AllocateZeroPool (sizeof (EFI_DHCP6_RETRANSMISSION));
> -   if (Retransmit == NULL) {
> -     return EFI_OUT_OF_RESOURCES;
> -@@ -976,7 +984,7 @@ HttpBootDhcp6Sarr (
> -   Config.IaInfoEvent           = NULL;
> -   Config.RapidCommit           = FALSE;
> -   Config.ReconfigureAccept     = FALSE;
> --  Config.IaDescriptor.IaId     = NET_RANDOM (NetRandomInitSeed ());
> -+  Config.IaDescriptor.IaId     = Random;
> -   Config.IaDescriptor.Type     = EFI_DHCP6_IA_TYPE_NA;
> -   Config.SolicitRetransmission = Retransmit;
> -   Retransmit->Irt              = 4;
> -diff --git a/NetworkPkg/IScsiDxe/IScsiCHAP.c 
> b/NetworkPkg/IScsiDxe/IScsiCHAP.c
> -index b507f11cd4..bebb1ac29b 100644
> ---- a/NetworkPkg/IScsiDxe/IScsiCHAP.c
> -+++ b/NetworkPkg/IScsiDxe/IScsiCHAP.c
> -@@ -3,6 +3,7 @@
> -   Configuration.
> -
> - Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
> -+Copyright (c) Microsoft Corporation
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -576,16 +577,24 @@ IScsiCHAPToSendReq (
> -         //
> -         // CHAP_I=<I>
> -         //
> --        IScsiGenRandom ((UINT8 *)&AuthData->OutIdentifier, 1);
> -+        Status = IScsiGenRandom ((UINT8 *)&AuthData->OutIdentifier, 1);
> -+        if (EFI_ERROR (Status)) {
> -+          break;
> -+        }
> -+
> -         AsciiSPrint (ValueStr, sizeof (ValueStr), "%d", 
> AuthData->OutIdentifier);
> -         IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_IDENTIFIER, ValueStr);
> -         //
> -         // CHAP_C=<C>
> -         //
> --        IScsiGenRandom (
> --          (UINT8 *)AuthData->OutChallenge,
> --          AuthData->Hash->DigestSize
> --          );
> -+        Status = IScsiGenRandom (
> -+                   (UINT8 *)AuthData->OutChallenge,
> -+                   AuthData->Hash->DigestSize
> -+                   );
> -+        if (EFI_ERROR (Status)) {
> -+          break;
> -+        }
> -+
> -         BinToHexStatus = IScsiBinToHex (
> -                            (UINT8 *)AuthData->OutChallenge,
> -                            AuthData->Hash->DigestSize,
> -diff --git a/NetworkPkg/IScsiDxe/IScsiMisc.c 
> b/NetworkPkg/IScsiDxe/IScsiMisc.c
> -index b3ea90158f..cd77f1a13e 100644
> ---- a/NetworkPkg/IScsiDxe/IScsiMisc.c
> -+++ b/NetworkPkg/IScsiDxe/IScsiMisc.c
> -@@ -2,6 +2,7 @@
> -   Miscellaneous routines for iSCSI driver.
> -
> - Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
> -+Copyright (c) Microsoft Corporation
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -474,20 +475,17 @@ IScsiNetNtoi (
> -   @param[in, out]  Rand       The buffer to contain random numbers.
> -   @param[in]       RandLength The length of the Rand buffer.
> -
> -+  @retval EFI_SUCCESS on success
> -+  @retval others      on error
> -+
> - **/
> --VOID
> -+EFI_STATUS
> - IScsiGenRandom (
> -   IN OUT UINT8  *Rand,
> -   IN     UINTN  RandLength
> -   )
> - {
> --  UINT32  Random;
> --
> --  while (RandLength > 0) {
> --    Random  = NET_RANDOM (NetRandomInitSeed ());
> --    *Rand++ = (UINT8)(Random);
> --    RandLength--;
> --  }
> -+  return PseudoRandom (Rand, RandLength);
> - }
> -
> - /**
> -diff --git a/NetworkPkg/IScsiDxe/IScsiMisc.h 
> b/NetworkPkg/IScsiDxe/IScsiMisc.h
> -index a951eee70e..91b2cd2261 100644
> ---- a/NetworkPkg/IScsiDxe/IScsiMisc.h
> -+++ b/NetworkPkg/IScsiDxe/IScsiMisc.h
> -@@ -2,6 +2,7 @@
> -   Miscellaneous definitions for iSCSI driver.
> -
> - Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
> -+Copyright (c) Microsoft Corporation
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -202,8 +203,11 @@ IScsiNetNtoi (
> -   @param[in, out]  Rand       The buffer to contain random numbers.
> -   @param[in]       RandLength The length of the Rand buffer.
> -
> -+  @retval EFI_SUCCESS on success
> -+  @retval others      on error
> -+
> - **/
> --VOID
> -+EFI_STATUS
> - IScsiGenRandom (
> -   IN OUT UINT8  *Rand,
> -   IN     UINTN  RandLength
> -diff --git a/NetworkPkg/Include/Library/NetLib.h 
> b/NetworkPkg/Include/Library/NetLib.h
> -index 8c0e62b388..e8108b79db 100644
> ---- a/NetworkPkg/Include/Library/NetLib.h
> -+++ b/NetworkPkg/Include/Library/NetLib.h
> -@@ -3,6 +3,7 @@
> -   It provides basic functions for the UEFI network stack.
> -
> - Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>
> -+Copyright (c) Microsoft Corporation
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -539,8 +540,6 @@ extern EFI_IPv4_ADDRESS  mZeroIp4Addr;
> - #define TICKS_PER_MS      10000U
> - #define TICKS_PER_SECOND  10000000U
> -
> --#define NET_RANDOM(Seed)  ((UINT32) ((UINT32) (Seed) * 1103515245UL + 
> 12345) % 4294967295UL)
> --
> - /**
> -   Extract a UINT32 from a byte stream.
> -
> -@@ -580,19 +579,40 @@ NetPutUint32 (
> -   );
> -
> - /**
> --  Initialize a random seed using current time and monotonic count.
> -+  Generate a Random output data given a length.
> -
> --  Get current time and monotonic count first. Then initialize a random seed
> --  based on some basic mathematics operation on the hour, day, minute, 
> second,
> --  nanosecond and year of the current time and the monotonic count value.
> -+  @param[out] Output - The buffer to store the generated random data.
> -+  @param[in] OutputLength - The length of the output buffer.
> -
> --  @return The random seed initialized with current time.
> -+  @retval EFI_SUCCESS           On Success
> -+  @retval EFI_INVALID_PARAMETER Pointer is null or size is zero
> -+  @retval EFI_NOT_FOUND         RNG protocol not found
> -+  @retval Others                Error from RngProtocol->GetRNG()
> -
> -+  @return Status code
> - **/
> --UINT32
> -+EFI_STATUS
> - EFIAPI
> --NetRandomInitSeed (
> --  VOID
> -+PseudoRandom (
> -+  OUT  VOID   *Output,
> -+  IN   UINTN  OutputLength
> -+  );
> -+
> -+/**
> -+  Generate a 32-bit pseudo-random number.
> -+
> -+  @param[out] Output - The buffer to store the generated random number.
> -+
> -+  @retval EFI_SUCCESS           On Success
> -+  @retval EFI_NOT_FOUND         RNG protocol not found
> -+  @retval Others                Error from RngProtocol->GetRNG()
> -+
> -+  @return Status code
> -+**/
> -+EFI_STATUS
> -+EFIAPI
> -+PseudoRandomU32 (
> -+  OUT  UINT32  *Output
> -   );
> -
> - #define NET_LIST_USER_STRUCT(Entry, Type, Field)        \
> -diff --git a/NetworkPkg/Ip4Dxe/Ip4Driver.c b/NetworkPkg/Ip4Dxe/Ip4Driver.c
> -index ec483ff01f..683423f38d 100644
> ---- a/NetworkPkg/Ip4Dxe/Ip4Driver.c
> -+++ b/NetworkPkg/Ip4Dxe/Ip4Driver.c
> -@@ -2,6 +2,7 @@
> -   The driver binding and service binding protocol for IP4 driver.
> -
> - Copyright (c) 2005 - 2019, Intel Corporation. All rights reserved.<BR>
> -+Copyright (c) Microsoft Corporation
> - (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>
> -
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> -@@ -549,11 +550,18 @@ Ip4DriverBindingStart (
> -   EFI_IP4_CONFIG2_PROTOCOL  *Ip4Cfg2;
> -   UINTN                     Index;
> -   IP4_CONFIG2_DATA_ITEM     *DataItem;
> -+  UINT32                    Random;
> -
> -   IpSb     = NULL;
> -   Ip4Cfg2  = NULL;
> -   DataItem = NULL;
> -
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -+
> -   //
> -   // Test for the Ip4 service binding protocol
> -   //
> -@@ -653,7 +661,7 @@ Ip4DriverBindingStart (
> -   //
> -   // Initialize the IP4 ID
> -   //
> --  mIp4Id = (UINT16)NET_RANDOM (NetRandomInitSeed ());
> -+  mIp4Id = (UINT16)Random;
> -
> -   return Status;
> -
> -diff --git a/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c 
> b/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c
> -index 70e232ce6c..4c1354d26c 100644
> ---- a/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c
> -+++ b/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c
> -@@ -2276,6 +2276,13 @@ Ip6ConfigInitInstance (
> -   UINTN                 Index;
> -   UINT16                IfIndex;
> -   IP6_CONFIG_DATA_ITEM  *DataItem;
> -+  UINT32                Random;
> -+
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -
> -   IpSb = IP6_SERVICE_FROM_IP6_CONFIG_INSTANCE (Instance);
> -
> -@@ -2381,7 +2388,7 @@ Ip6ConfigInitInstance (
> -     // The NV variable is not set, so generate a random IAID, and write 
> down the
> -     // fresh new configuration as the NV variable now.
> -     //
> --    Instance->IaId = NET_RANDOM (NetRandomInitSeed ());
> -+    Instance->IaId = Random;
> -
> -     for (Index = 0; Index < IpSb->SnpMode.HwAddressSize; Index++) {
> -       Instance->IaId |= (IpSb->SnpMode.CurrentAddress.Addr[Index] << 
> ((Index << 3) & 31));
> -diff --git a/NetworkPkg/Ip6Dxe/Ip6Driver.c b/NetworkPkg/Ip6Dxe/Ip6Driver.c
> -index b483a7d136..cbe011dad4 100644
> ---- a/NetworkPkg/Ip6Dxe/Ip6Driver.c
> -+++ b/NetworkPkg/Ip6Dxe/Ip6Driver.c
> -@@ -3,7 +3,7 @@
> -
> -   Copyright (c) 2009 - 2019, Intel Corporation. All rights reserved.<BR>
> -   (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>
> --
> -+  Copyright (c) Microsoft Corporation
> -   SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -316,7 +316,11 @@ Ip6CreateService (
> -   IpSb->CurHopLimit       = IP6_HOP_LIMIT;
> -   IpSb->LinkMTU           = IP6_MIN_LINK_MTU;
> -   IpSb->BaseReachableTime = IP6_REACHABLE_TIME;
> --  Ip6UpdateReachableTime (IpSb);
> -+  Status                  = Ip6UpdateReachableTime (IpSb);
> -+  if (EFI_ERROR (Status)) {
> -+    goto ON_ERROR;
> -+  }
> -+
> -   //
> -   // RFC4861 RETRANS_TIMER: 1,000 milliseconds
> -   //
> -@@ -516,11 +520,18 @@ Ip6DriverBindingStart (
> -   EFI_STATUS               Status;
> -   EFI_IP6_CONFIG_PROTOCOL  *Ip6Cfg;
> -   IP6_CONFIG_DATA_ITEM     *DataItem;
> -+  UINT32                   Random;
> -
> -   IpSb     = NULL;
> -   Ip6Cfg   = NULL;
> -   DataItem = NULL;
> -
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -+
> -   //
> -   // Test for the Ip6 service binding protocol
> -   //
> -@@ -656,7 +667,7 @@ Ip6DriverBindingStart (
> -   //
> -   // Initialize the IP6 ID
> -   //
> --  mIp6Id = NET_RANDOM (NetRandomInitSeed ());
> -+  mIp6Id = Random;
> -
> -   return EFI_SUCCESS;
> -
> -diff --git a/NetworkPkg/Ip6Dxe/Ip6If.c b/NetworkPkg/Ip6Dxe/Ip6If.c
> -index 4629c05f25..f3d11c4d21 100644
> ---- a/NetworkPkg/Ip6Dxe/Ip6If.c
> -+++ b/NetworkPkg/Ip6Dxe/Ip6If.c
> -@@ -2,7 +2,7 @@
> -   Implement IP6 pseudo interface.
> -
> -   Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
> --
> -+  Copyright (c) Microsoft Corporation
> -   SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -89,6 +89,14 @@ Ip6SetAddress (
> -   IP6_PREFIX_LIST_ENTRY  *PrefixEntry;
> -   UINT64                 Delay;
> -   IP6_DELAY_JOIN_LIST    *DelayNode;
> -+  EFI_STATUS             Status;
> -+  UINT32                 Random;
> -+
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -
> -   NET_CHECK_SIGNATURE (Interface, IP6_INTERFACE_SIGNATURE);
> -
> -@@ -164,7 +172,7 @@ Ip6SetAddress (
> -   // Thus queue the address to be processed in Duplicate Address Detection 
> module
> -   // after the delay time (in milliseconds).
> -   //
> --  Delay = (UINT64)NET_RANDOM (NetRandomInitSeed ());
> -+  Delay = (UINT64)Random;
> -   Delay = MultU64x32 (Delay, IP6_ONE_SECOND_IN_MS);
> -   Delay = RShiftU64 (Delay, 32);
> -
> -diff --git a/NetworkPkg/Ip6Dxe/Ip6Mld.c b/NetworkPkg/Ip6Dxe/Ip6Mld.c
> -index e6b2b653e2..498a118543 100644
> ---- a/NetworkPkg/Ip6Dxe/Ip6Mld.c
> -+++ b/NetworkPkg/Ip6Dxe/Ip6Mld.c
> -@@ -696,7 +696,15 @@ Ip6UpdateDelayTimer (
> -   IN OUT IP6_MLD_GROUP  *Group
> -   )
> - {
> --  UINT32  Delay;
> -+  UINT32      Delay;
> -+  EFI_STATUS  Status;
> -+  UINT32      Random;
> -+
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -
> -   //
> -   // If the Query packet specifies a Maximum Response Delay of zero, 
> perform timer
> -@@ -715,7 +723,7 @@ Ip6UpdateDelayTimer (
> -   // is less than the remaining value of the running timer.
> -   //
> -   if ((Group->DelayTimer == 0) || (Delay < Group->DelayTimer)) {
> --    Group->DelayTimer = Delay / 4294967295UL * NET_RANDOM 
> (NetRandomInitSeed ());
> -+    Group->DelayTimer = Delay / 4294967295UL * Random;
> -   }
> -
> -   return EFI_SUCCESS;
> -diff --git a/NetworkPkg/Ip6Dxe/Ip6Nd.c b/NetworkPkg/Ip6Dxe/Ip6Nd.c
> -index c10c7017f8..72aa45c10f 100644
> ---- a/NetworkPkg/Ip6Dxe/Ip6Nd.c
> -+++ b/NetworkPkg/Ip6Dxe/Ip6Nd.c
> -@@ -2,7 +2,7 @@
> -   Implementation of Neighbor Discovery support routines.
> -
> -   Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
> --
> -+  Copyright (c) Microsoft Corporation
> -   SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -16,17 +16,28 @@ EFI_MAC_ADDRESS  mZeroMacAddress;
> -
> -   @param[in, out] IpSb     Points to the IP6_SERVICE.
> -
> -+  @retval EFI_SUCCESS           ReachableTime Updated
> -+  @retval others                Failed to update ReachableTime
> - **/
> --VOID
> -+EFI_STATUS
> - Ip6UpdateReachableTime (
> -   IN OUT IP6_SERVICE  *IpSb
> -   )
> - {
> --  UINT32  Random;
> -+  UINT32      Random;
> -+  EFI_STATUS  Status;
> -
> --  Random              = (NetRandomInitSeed () / 4294967295UL) * 
> IP6_RANDOM_FACTOR_SCALE;
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -+
> -+  Random              = (Random / 4294967295UL) * IP6_RANDOM_FACTOR_SCALE;
> -   Random              = Random + IP6_MIN_RANDOM_FACTOR_SCALED;
> -   IpSb->ReachableTime = (IpSb->BaseReachableTime * Random) / 
> IP6_RANDOM_FACTOR_SCALE;
> -+
> -+  return EFI_SUCCESS;
> - }
> -
> - /**
> -@@ -972,10 +983,17 @@ Ip6InitDADProcess (
> -   IP6_SERVICE                               *IpSb;
> -   EFI_STATUS                                Status;
> -   UINT32                                    MaxDelayTick;
> -+  UINT32                                    Random;
> -
> -   NET_CHECK_SIGNATURE (IpIf, IP6_INTERFACE_SIGNATURE);
> -   ASSERT (AddressInfo != NULL);
> -
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -+
> -   //
> -   // Do nothing if we have already started DAD on the address.
> -   //
> -@@ -1014,7 +1032,7 @@ Ip6InitDADProcess (
> -   Entry->Transmit    = 0;
> -   Entry->Receive     = 0;
> -   MaxDelayTick       = IP6_MAX_RTR_SOLICITATION_DELAY / 
> IP6_TIMER_INTERVAL_IN_MS;
> --  Entry->RetransTick = (MaxDelayTick * ((NET_RANDOM (NetRandomInitSeed ()) 
> % 5) + 1)) / 5;
> -+  Entry->RetransTick = (MaxDelayTick * ((Random % 5) + 1)) / 5;
> -   Entry->AddressInfo = AddressInfo;
> -   Entry->Callback    = Callback;
> -   Entry->Context     = Context;
> -@@ -2078,7 +2096,10 @@ Ip6ProcessRouterAdvertise (
> -     // in BaseReachableTime and recompute a ReachableTime.
> -     //
> -     IpSb->BaseReachableTime = ReachableTime;
> --    Ip6UpdateReachableTime (IpSb);
> -+    Status                  = Ip6UpdateReachableTime (IpSb);
> -+    if (EFI_ERROR (Status)) {
> -+      goto Exit;
> -+    }
> -   }
> -
> -   if (RetransTimer != 0) {
> -diff --git a/NetworkPkg/Ip6Dxe/Ip6Nd.h b/NetworkPkg/Ip6Dxe/Ip6Nd.h
> -index bf64e9114e..5795e23c7d 100644
> ---- a/NetworkPkg/Ip6Dxe/Ip6Nd.h
> -+++ b/NetworkPkg/Ip6Dxe/Ip6Nd.h
> -@@ -2,7 +2,7 @@
> -   Definition of Neighbor Discovery support routines.
> -
> -   Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
> --
> -+  Copyright (c) Microsoft Corporation
> -   SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -780,10 +780,10 @@ Ip6OnArpResolved (
> - /**
> -   Update the ReachableTime in IP6 service binding instance data, in 
> milliseconds.
> -
> --  @param[in, out] IpSb     Points to the IP6_SERVICE.
> --
> -+  @retval EFI_SUCCESS           ReachableTime Updated
> -+  @retval others                Failed to update ReachableTime
> - **/
> --VOID
> -+EFI_STATUS
> - Ip6UpdateReachableTime (
> -   IN OUT IP6_SERVICE  *IpSb
> -   );
> -diff --git a/NetworkPkg/Library/DxeNetLib/DxeNetLib.c 
> b/NetworkPkg/Library/DxeNetLib/DxeNetLib.c
> -index fd4a9e15a8..01c13c08d2 100644
> ---- a/NetworkPkg/Library/DxeNetLib/DxeNetLib.c
> -+++ b/NetworkPkg/Library/DxeNetLib/DxeNetLib.c
> -@@ -3,6 +3,7 @@
> -
> - Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>
> - (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
> -+Copyright (c) Microsoft Corporation
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> - **/
> -
> -@@ -31,6 +32,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> - #include <Library/DevicePathLib.h>
> - #include <Library/PrintLib.h>
> - #include <Library/UefiLib.h>
> -+#include <Protocol/Rng.h>
> -
> - #define NIC_ITEM_CONFIG_SIZE  (sizeof (NIC_IP4_CONFIG_INFO) + sizeof 
> (EFI_IP4_ROUTE_TABLE) * MAX_IP4_CONFIG_IN_VARIABLE)
> - #define DEFAULT_ZERO_START    ((UINTN) ~0)
> -@@ -127,6 +129,25 @@ GLOBAL_REMOVE_IF_UNREFERENCED VLAN_DEVICE_PATH  
> mNetVlanDevicePathTemplate = {
> -   0
> - };
> -
> -+//
> -+// These represent UEFI SPEC defined algorithms that should be supported by
> -+// the RNG protocol and are generally considered secure.
> -+//
> -+// The order of the algorithms in this array is important. This order is 
> the order
> -+// in which the algorithms will be tried by the RNG protocol.
> -+// If your platform needs to use a specific algorithm for the random number 
> generator,
> -+// then you should place that algorithm first in the array.
> -+//
> -+GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID  *mSecureHashAlgorithms[] = {
> -+  &gEfiRngAlgorithmSp80090Ctr256Guid,  // SP800-90A DRBG CTR using AES-256
> -+  &gEfiRngAlgorithmSp80090Hmac256Guid, // SP800-90A DRBG HMAC using SHA-256
> -+  &gEfiRngAlgorithmSp80090Hash256Guid, // SP800-90A DRBG Hash using SHA-256
> -+  &gEfiRngAlgorithmArmRndr,            // unspecified SP800-90A DRBG via 
> ARM RNDR register
> -+  &gEfiRngAlgorithmRaw,                // Raw data from NRBG (or TRNG)
> -+};
> -+
> -+#define SECURE_HASH_ALGORITHMS_SIZE  (sizeof (mSecureHashAlgorithms) / 
> sizeof (EFI_GUID *))
> -+
> - /**
> -   Locate the handles that support SNP, then open one of them
> -   to send the syslog packets. The caller isn't required to close
> -@@ -884,34 +905,107 @@ Ip6Swap128 (
> - }
> -
> - /**
> --  Initialize a random seed using current time and monotonic count.
> -+  Generate a Random output data given a length.
> -
> --  Get current time and monotonic count first. Then initialize a random seed
> --  based on some basic mathematics operation on the hour, day, minute, 
> second,
> --  nanosecond and year of the current time and the monotonic count value.
> -+  @param[out] Output - The buffer to store the generated random data.
> -+  @param[in] OutputLength - The length of the output buffer.
> -
> --  @return The random seed initialized with current time.
> -+  @retval EFI_SUCCESS           On Success
> -+  @retval EFI_INVALID_PARAMETER Pointer is null or size is zero
> -+  @retval EFI_NOT_FOUND         RNG protocol not found
> -+  @retval Others                Error from RngProtocol->GetRNG()
> -
> -+  @return Status code
> - **/
> --UINT32
> -+EFI_STATUS
> - EFIAPI
> --NetRandomInitSeed (
> --  VOID
> -+PseudoRandom (
> -+  OUT  VOID   *Output,
> -+  IN   UINTN  OutputLength
> -   )
> - {
> --  EFI_TIME  Time;
> --  UINT32    Seed;
> --  UINT64    MonotonicCount;
> -+  EFI_RNG_PROTOCOL  *RngProtocol;
> -+  EFI_STATUS        Status;
> -+  UINTN             AlgorithmIndex;
> -+
> -+  if ((Output == NULL) || (OutputLength == 0)) {
> -+    return EFI_INVALID_PARAMETER;
> -+  }
> -+
> -+  Status = gBS->LocateProtocol (&gEfiRngProtocolGuid, NULL, (VOID 
> **)&RngProtocol);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "Failed to locate EFI_RNG_PROTOCOL: %r\n", 
> Status));
> -+    ASSERT_EFI_ERROR (Status);
> -+    return Status;
> -+  }
> -+
> -+  if (PcdGetBool (PcdEnforceSecureRngAlgorithms)) {
> -+    for (AlgorithmIndex = 0; AlgorithmIndex < SECURE_HASH_ALGORITHMS_SIZE; 
> AlgorithmIndex++) {
> -+      Status = RngProtocol->GetRNG (RngProtocol, 
> mSecureHashAlgorithms[AlgorithmIndex], OutputLength, (UINT8 *)Output);
> -+      if (!EFI_ERROR (Status)) {
> -+        //
> -+        // Secure Algorithm was supported on this platform
> -+        //
> -+        return EFI_SUCCESS;
> -+      } else if (Status == EFI_UNSUPPORTED) {
> -+        //
> -+        // Secure Algorithm was not supported on this platform
> -+        //
> -+        DEBUG ((DEBUG_ERROR, "Failed to generate random data using secure 
> algorithm %d: %r\n", AlgorithmIndex, Status));
> -+
> -+        //
> -+        // Try the next secure algorithm
> -+        //
> -+        continue;
> -+      } else {
> -+        //
> -+        // Some other error occurred
> -+        //
> -+        DEBUG ((DEBUG_ERROR, "Failed to generate random data using secure 
> algorithm %d: %r\n", AlgorithmIndex, Status));
> -+        ASSERT_EFI_ERROR (Status);
> -+        return Status;
> -+      }
> -+    }
> -+
> -+    //
> -+    // If we get here, we failed to generate random data using any secure 
> algorithm
> -+    // Platform owner should ensure that at least one secure algorithm is 
> supported
> -+    //
> -+    ASSERT_EFI_ERROR (Status);
> -+    return Status;
> -+  }
> -+
> -+  //
> -+  // Lets try using the default algorithm (which may not be secure)
> -+  //
> -+  Status = RngProtocol->GetRNG (RngProtocol, NULL, OutputLength, (UINT8 
> *)Output);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random data: %r\n", 
> __func__, Status));
> -+    ASSERT_EFI_ERROR (Status);
> -+    return Status;
> -+  }
> -
> --  gRT->GetTime (&Time, NULL);
> --  Seed  = (Time.Hour << 24 | Time.Day << 16 | Time.Minute << 8 | 
> Time.Second);
> --  Seed ^= Time.Nanosecond;
> --  Seed ^= Time.Year << 7;
> -+  return EFI_SUCCESS;
> -+}
> -+
> -+/**
> -+  Generate a 32-bit pseudo-random number.
> -
> --  gBS->GetNextMonotonicCount (&MonotonicCount);
> --  Seed += (UINT32)MonotonicCount;
> -+  @param[out] Output - The buffer to store the generated random number.
> -
> --  return Seed;
> -+  @retval EFI_SUCCESS           On Success
> -+  @retval EFI_NOT_FOUND         RNG protocol not found
> -+  @retval Others                Error from RngProtocol->GetRNG()
> -+
> -+  @return Status code
> -+**/
> -+EFI_STATUS
> -+EFIAPI
> -+PseudoRandomU32 (
> -+  OUT UINT32  *Output
> -+  )
> -+{
> -+  return PseudoRandom (Output, sizeof (*Output));
> - }
> -
> - /**
> -diff --git a/NetworkPkg/Library/DxeNetLib/DxeNetLib.inf 
> b/NetworkPkg/Library/DxeNetLib/DxeNetLib.inf
> -index 8145d256ec..a8f534a293 100644
> ---- a/NetworkPkg/Library/DxeNetLib/DxeNetLib.inf
> -+++ b/NetworkPkg/Library/DxeNetLib/DxeNetLib.inf
> -@@ -3,6 +3,7 @@
> - #
> - #  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
> - #  (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
> -+#  Copyright (c) Microsoft Corporation
> - #  SPDX-License-Identifier: BSD-2-Clause-Patent
> - #
> - ##
> -@@ -49,7 +50,11 @@
> -   gEfiSmbiosTableGuid                           ## SOMETIMES_CONSUMES  ## 
> SystemTable
> -   gEfiSmbios3TableGuid                          ## SOMETIMES_CONSUMES  ## 
> SystemTable
> -   gEfiAdapterInfoMediaStateGuid                 ## SOMETIMES_CONSUMES
> --
> -+  gEfiRngAlgorithmRaw                           ## CONSUMES
> -+  gEfiRngAlgorithmSp80090Ctr256Guid             ## CONSUMES
> -+  gEfiRngAlgorithmSp80090Hmac256Guid            ## CONSUMES
> -+  gEfiRngAlgorithmSp80090Hash256Guid            ## CONSUMES
> -+  gEfiRngAlgorithmArmRndr                       ## CONSUMES
> -
> - [Protocols]
> -   gEfiSimpleNetworkProtocolGuid                 ## SOMETIMES_CONSUMES
> -@@ -59,3 +64,10 @@
> -   gEfiComponentNameProtocolGuid                 ## SOMETIMES_CONSUMES
> -   gEfiComponentName2ProtocolGuid                ## SOMETIMES_CONSUMES
> -   gEfiAdapterInformationProtocolGuid            ## SOMETIMES_CONSUMES
> -+  gEfiRngProtocolGuid                           ## CONSUMES
> -+
> -+[FixedPcd]
> -+  gEfiNetworkPkgTokenSpaceGuid.PcdEnforceSecureRngAlgorithms ## CONSUMES
> -+
> -+[Depex]
> -+  gEfiRngProtocolGuid
> -diff --git a/NetworkPkg/NetworkPkg.dec b/NetworkPkg/NetworkPkg.dec
> -index 928e84fec4..ff335e957c 100644
> ---- a/NetworkPkg/NetworkPkg.dec
> -+++ b/NetworkPkg/NetworkPkg.dec
> -@@ -5,6 +5,7 @@
> - #
> - # Copyright (c) 2009 - 2021, Intel Corporation. All rights reserved.<BR>
> - # (C) Copyright 2015-2020 Hewlett Packard Enterprise Development LP<BR>
> -+# Copyright (c) Microsoft Corporation
> - #
> - # SPDX-License-Identifier: BSD-2-Clause-Patent
> - #
> -@@ -127,6 +128,12 @@
> -   # @Prompt Indicates whether SnpDxe creates event for ExitBootServices() 
> call.
> -   
> gEfiNetworkPkgTokenSpaceGuid.PcdSnpCreateExitBootServicesEvent|TRUE|BOOLEAN|0x1000000C
> -
> -+  ## Enforces the use of Secure UEFI spec defined RNG algorithms for all 
> network connections.
> -+  # TRUE  - Enforce the use of Secure UEFI spec defined RNG algorithms.
> -+  # FALSE - Do not enforce and depend on the default implementation of RNG 
> algorithm from the provider.
> -+  # @Prompt Enforce the use of Secure UEFI spec defined RNG algorithms.
> -+  
> gEfiNetworkPkgTokenSpaceGuid.PcdEnforceSecureRngAlgorithms|TRUE|BOOLEAN|0x1000000D
> -+
> - [PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
> -   ## IPv6 DHCP Unique Identifier (DUID) Type configuration (From RFCs 3315 
> and 6355).
> -   # 01 = DUID Based on Link-layer Address Plus Time [DUID-LLT]
> -diff --git a/NetworkPkg/SecurityFixes.yaml b/NetworkPkg/SecurityFixes.yaml
> -index 7e900483fe..2b2c794697 100644
> ---- a/NetworkPkg/SecurityFixes.yaml
> -+++ b/NetworkPkg/SecurityFixes.yaml
> -@@ -121,3 +121,42 @@ CVE_2023_45235:
> -     - http://www.openwall.com/lists/oss-security/2024/01/16/2
> -     - 
> http://packetstormsecurity.com/files/176574/PixieFail-Proof-Of-Concepts.html
> -     - 
> https://blog.quarkslab.com/pixiefail-nine-vulnerabilities-in-tianocores-edk-ii-ipv6-network-stack.html
> -+CVE_2023_45237:
> -+  commit_titles:
> -+    - "NetworkPkg:: SECURITY PATCH CVE 2023-45237"
> -+  cve: CVE-2023-45237
> -+  date_reported: 2023-08-28 13:56 UTC
> -+  description: "Bug 09 - Use of a Weak PseudoRandom Number Generator"
> -+  note:
> -+  files_impacted:
> -+    - NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c
> -+    - NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c
> -+    - NetworkPkg/DnsDxe/DnsDhcp.c
> -+    - NetworkPkg/DnsDxe/DnsImpl.c
> -+    - NetworkPkg/HttpBootDxe/HttpBootDhcp6.c
> -+    - NetworkPkg/IScsiDxe/IScsiCHAP.c
> -+    - NetworkPkg/IScsiDxe/IScsiMisc.c
> -+    - NetworkPkg/IScsiDxe/IScsiMisc.h
> -+    - NetworkPkg/Include/Library/NetLib.h
> -+    - NetworkPkg/Ip4Dxe/Ip4Driver.c
> -+    - NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c
> -+    - NetworkPkg/Ip6Dxe/Ip6Driver.c
> -+    - NetworkPkg/Ip6Dxe/Ip6If.c
> -+    - NetworkPkg/Ip6Dxe/Ip6Mld.c
> -+    - NetworkPkg/Ip6Dxe/Ip6Nd.c
> -+    - NetworkPkg/Ip6Dxe/Ip6Nd.h
> -+    - NetworkPkg/Library/DxeNetLib/DxeNetLib.c
> -+    - NetworkPkg/Library/DxeNetLib/DxeNetLib.inf
> -+    - NetworkPkg/NetworkPkg.dec
> -+    - NetworkPkg/TcpDxe/TcpDriver.c
> -+    - NetworkPkg/Udp4Dxe/Udp4Driver.c
> -+    - NetworkPkg/Udp6Dxe/Udp6Driver.c
> -+    - NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c
> -+    - NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c
> -+    - NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c
> -+  links:
> -+    - https://bugzilla.tianocore.org/show_bug.cgi?id=4542
> -+    - https://nvd.nist.gov/vuln/detail/CVE-2023-45237
> -+    - http://www.openwall.com/lists/oss-security/2024/01/16/2
> -+    - 
> http://packetstormsecurity.com/files/176574/PixieFail-Proof-Of-Concepts.html
> -+    - 
> https://blog.quarkslab.com/pixiefail-nine-vulnerabilities-in-tianocores-edk-ii-ipv6-network-stack.html
> -diff --git a/NetworkPkg/TcpDxe/TcpDriver.c b/NetworkPkg/TcpDxe/TcpDriver.c
> -index 98a90e0210..8fe6badd68 100644
> ---- a/NetworkPkg/TcpDxe/TcpDriver.c
> -+++ b/NetworkPkg/TcpDxe/TcpDriver.c
> -@@ -2,7 +2,7 @@
> -   The driver binding and service binding protocol for the TCP driver.
> -
> -   Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
> --
> -+  Copyright (c) Microsoft Corporation
> -   SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -163,7 +163,13 @@ TcpDriverEntryPoint (
> -   )
> - {
> -   EFI_STATUS  Status;
> --  UINT32      Seed;
> -+  UINT32      Random;
> -+
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a Failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -
> -   //
> -   // Install the TCP Driver Binding Protocol
> -@@ -203,9 +209,8 @@ TcpDriverEntryPoint (
> -   //
> -   // Initialize ISS and random port.
> -   //
> --  Seed            = NetRandomInitSeed ();
> --  mTcpGlobalIss   = NET_RANDOM (Seed) % mTcpGlobalIss;
> --  mTcp4RandomPort = (UINT16)(TCP_PORT_KNOWN + (NET_RANDOM (Seed) % 
> TCP_PORT_KNOWN));
> -+  mTcpGlobalIss   = Random % mTcpGlobalIss;
> -+  mTcp4RandomPort = (UINT16)(TCP_PORT_KNOWN + (Random % TCP_PORT_KNOWN));
> -   mTcp6RandomPort = mTcp4RandomPort;
> -
> -   return EFI_SUCCESS;
> -diff --git a/NetworkPkg/TcpDxe/TcpDxe.inf b/NetworkPkg/TcpDxe/TcpDxe.inf
> -index c0acbdca57..cf5423f4c5 100644
> ---- a/NetworkPkg/TcpDxe/TcpDxe.inf
> -+++ b/NetworkPkg/TcpDxe/TcpDxe.inf
> -@@ -82,5 +82,8 @@
> -   gEfiTcp6ProtocolGuid                          ## BY_START
> -   gEfiTcp6ServiceBindingProtocolGuid            ## BY_START
> -
> -+[Depex]
> -+  gEfiHash2ServiceBindingProtocolGuid
> -+
> - [UserExtensions.TianoCore."ExtraFiles"]
> -   TcpDxeExtra.uni
> -diff --git a/NetworkPkg/Udp4Dxe/Udp4Driver.c 
> b/NetworkPkg/Udp4Dxe/Udp4Driver.c
> -index cb917fcfc9..c7ea16f4cd 100644
> ---- a/NetworkPkg/Udp4Dxe/Udp4Driver.c
> -+++ b/NetworkPkg/Udp4Dxe/Udp4Driver.c
> -@@ -1,6 +1,7 @@
> - /** @file
> -
> - Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
> -+Copyright (c) Microsoft Corporation
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -555,6 +556,13 @@ Udp4DriverEntryPoint (
> -   )
> - {
> -   EFI_STATUS  Status;
> -+  UINT32      Random;
> -+
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -
> -   //
> -   // Install the Udp4DriverBinding and Udp4ComponentName protocols.
> -@@ -571,7 +579,7 @@ Udp4DriverEntryPoint (
> -     //
> -     // Initialize the UDP random port.
> -     //
> --    mUdp4RandomPort = (UINT16)(((UINT16)NetRandomInitSeed ()) % 
> UDP4_PORT_KNOWN + UDP4_PORT_KNOWN);
> -+    mUdp4RandomPort = (UINT16)(((UINT16)Random) % UDP4_PORT_KNOWN + 
> UDP4_PORT_KNOWN);
> -   }
> -
> -   return Status;
> -diff --git a/NetworkPkg/Udp6Dxe/Udp6Driver.c 
> b/NetworkPkg/Udp6Dxe/Udp6Driver.c
> -index ae96fb9966..edb758d57c 100644
> ---- a/NetworkPkg/Udp6Dxe/Udp6Driver.c
> -+++ b/NetworkPkg/Udp6Dxe/Udp6Driver.c
> -@@ -2,7 +2,7 @@
> -   Driver Binding functions and Service Binding functions for the Network 
> driver module.
> -
> -   Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
> --
> -+  Copyright (c) Microsoft Corporation
> -   SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -596,6 +596,13 @@ Udp6DriverEntryPoint (
> -   )
> - {
> -   EFI_STATUS  Status;
> -+  UINT32      Random;
> -+
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -
> -   //
> -   // Install the Udp6DriverBinding and Udp6ComponentName protocols.
> -@@ -614,7 +621,7 @@ Udp6DriverEntryPoint (
> -     // Initialize the UDP random port.
> -     //
> -     mUdp6RandomPort = (UINT16)(
> --                               ((UINT16)NetRandomInitSeed ()) %
> -+                               ((UINT16)Random) %
> -                                UDP6_PORT_KNOWN +
> -                                UDP6_PORT_KNOWN
> -                                );
> -diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c 
> b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c
> -index 91146b78cb..452038c219 100644
> ---- a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c
> -+++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c
> -@@ -2,7 +2,7 @@
> -   Functions implementation related with DHCPv4 for UefiPxeBc Driver.
> -
> -   Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
> --
> -+  Copyright (c) Microsoft Corporation
> -   SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> - **/
> -@@ -1381,6 +1381,12 @@ PxeBcDhcp4Discover (
> -   UINT8                             VendorOptLen;
> -   UINT32                            Xid;
> -
> -+  Status = PseudoRandomU32 (&Xid);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -+
> -   Mode   = Private->PxeBc.Mode;
> -   Dhcp4  = Private->Dhcp4;
> -   Status = EFI_SUCCESS;
> -@@ -1471,7 +1477,6 @@ PxeBcDhcp4Discover (
> -   //
> -   // Set fields of the token for the request packet.
> -   //
> --  Xid                                 = NET_RANDOM (NetRandomInitSeed ());
> -   Token.Packet->Dhcp4.Header.Xid      = HTONL (Xid);
> -   Token.Packet->Dhcp4.Header.Reserved = HTONS ((UINT16)((IsBCast) ? 0x8000 
> : 0x0));
> -   CopyMem (&Token.Packet->Dhcp4.Header.ClientAddr, &Private->StationIp, 
> sizeof (EFI_IPv4_ADDRESS));
> -diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c 
> b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c
> -index 7fd1281c11..bcabbd2219 100644
> ---- a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c
> -+++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c
> -@@ -2180,7 +2180,7 @@ PxeBcDhcp6Discover (
> -   UINTN                            ReadSize;
> -   UINT16                           OpCode;
> -   UINT16                           OpLen;
> --  UINT32                           Xid;
> -+  UINT32                           Random;
> -   EFI_STATUS                       Status;
> -   UINTN                            DiscoverLenNeeded;
> -
> -@@ -2198,6 +2198,12 @@ PxeBcDhcp6Discover (
> -     return EFI_DEVICE_ERROR;
> -   }
> -
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", 
> __func__, Status));
> -+    return Status;
> -+  }
> -+
> -   DiscoverLenNeeded = sizeof (EFI_PXE_BASE_CODE_DHCPV6_PACKET);
> -   Discover          = AllocateZeroPool (DiscoverLenNeeded);
> -   if (Discover == NULL) {
> -@@ -2207,8 +2213,7 @@ PxeBcDhcp6Discover (
> -   //
> -   // Build the discover packet by the cached request packet before.
> -   //
> --  Xid                     = NET_RANDOM (NetRandomInitSeed ());
> --  Discover->TransactionId = HTONL (Xid);
> -+  Discover->TransactionId = HTONL (Random);
> -   Discover->MessageType   = Request->Dhcp6.Header.MessageType;
> -   RequestOpt              = Request->Dhcp6.Option;
> -   DiscoverOpt             = Discover->DhcpOptions;
> -diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c 
> b/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c
> -index d84aca7e85..4cd915b411 100644
> ---- a/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c
> -+++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c
> -@@ -3,6 +3,7 @@
> -
> -   (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>
> -   Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>
> -+  Copyright (c) Microsoft Corporation
> -
> -   SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> -@@ -892,6 +893,13 @@ PxeBcCreateIp6Children (
> -   PXEBC_PRIVATE_PROTOCOL       *Id;
> -   EFI_SIMPLE_NETWORK_PROTOCOL  *Snp;
> -   UINTN                        Index;
> -+  UINT32                       Random;
> -+
> -+  Status = PseudoRandomU32 (&Random);
> -+  if (EFI_ERROR (Status)) {
> -+    DEBUG ((DEBUG_ERROR, "Failed to generate random number using 
> EFI_RNG_PROTOCOL: %r\n", Status));
> -+    return Status;
> -+  }
> -
> -   if (Private->Ip6Nic != NULL) {
> -     //
> -@@ -935,9 +943,9 @@ PxeBcCreateIp6Children (
> -   }
> -
> -   //
> --  // Generate a random IAID for the Dhcp6 assigned address.
> -+  // Set a random IAID for the Dhcp6 assigned address.
> -   //
> --  Private->IaId = NET_RANDOM (NetRandomInitSeed ());
> -+  Private->IaId = Random;
> -   if (Private->Snp != NULL) {
> -     for (Index = 0; Index < Private->Snp->Mode->HwAddressSize; Index++) {
> -       Private->IaId |= (Private->Snp->Mode->CurrentAddress.Addr[Index] << 
> ((Index << 3) & 31));
> ---
> -2.40.0
> -
> diff --git a/meta/recipes-core/ovmf/ovmf_git.bb 
> b/meta/recipes-core/ovmf/ovmf_git.bb
> index d52e3f4971..bb345688ac 100644
> --- a/meta/recipes-core/ovmf/ovmf_git.bb
> +++ b/meta/recipes-core/ovmf/ovmf_git.bb
> @@ -47,8 +47,6 @@ SRC_URI = 
> "gitsm://github.com/tianocore/edk2.git;branch=master;protocol=https \
>             file://CVE-2023-45229-0002.patch \
>             file://CVE-2023-45229-0003.patch \
>             file://CVE-2023-45229-0004.patch \
> -           file://CVE-2023-45237-0001.patch \
> -           file://CVE-2023-45237-0002.patch \
>             file://CVE-2023-45236.patch \
>             file://CVE-2022-36765-0001.patch \
>             file://CVE-2022-36765-0002.patch \
> --
> 2.34.1
>
>
> 
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#211712): 
https://lists.openembedded.org/g/openembedded-core/message/211712
Mute This Topic: https://lists.openembedded.org/mt/111267276/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to