]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/ReportStatusCodeRouter: Clear RSC Data buffer if Data is NULL
authorMichael Kubacki <michael.kubacki@microsoft.com>
Wed, 8 Apr 2020 22:11:59 +0000 (06:11 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Tue, 21 Apr 2020 02:20:51 +0000 (02:20 +0000)
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=1969

ReportDispatcher() may be invoked with a NULL Data argument. When TPL is
less than TPL_HIGH_LEVEL and Data is NULL, the EFI_STATUS_CODE_DATA
structure inside RscData should be cleared so listeners will not receive
data from a previous operation.

Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Kun Qin <Kun.Qin@microsoft.com>
Cc: Liming Gao <liming.gao@intel.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Reviewed-by: Dandan Bi <dandan.bi@intel.com>
MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.c

index 6ca7e180ebb342821675389cae9468e5b5249413..5df83027c62db821988bd8e7bf28c1af4ce005fb 100644 (file)
@@ -3,6 +3,7 @@
   and Status Code Runtime Protocol.\r
 \r
   Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) Microsoft Corporation.<BR>\r
   SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
@@ -307,6 +308,9 @@ ReportDispatcher (
     }\r
     if (Data != NULL) {\r
       CopyMem (&RscData->Data, Data, Data->HeaderSize + Data->Size);\r
+    } else {\r
+      ZeroMem (&RscData->Data, sizeof (RscData->Data));\r
+      RscData->Data.HeaderSize = sizeof (RscData->Data);\r
     }\r
 \r
     Status = gBS->SignalEvent (CallbackEntry->Event);\r