From 7a7bedce25d257c1058d9a5212a3a0554c5d70a6 Mon Sep 17 00:00:00 2001 From: Michael Kubacki Date: Thu, 9 Apr 2020 06:11:59 +0800 Subject: MdeModulePkg/ReportStatusCodeRouter: Clear RSC Data buffer if Data is NULL 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 Cc: Jian J Wang Cc: Kun Qin Cc: Liming Gao Signed-off-by: Michael Kubacki Reviewed-by: Dandan Bi --- .../RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'MdeModulePkg/Universal') diff --git a/MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.c b/MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.c index 6ca7e180eb..5df83027c6 100644 --- a/MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.c +++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.c @@ -3,6 +3,7 @@ and Status Code Runtime Protocol. Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+ Copyright (c) Microsoft Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -307,6 +308,9 @@ ReportDispatcher ( } if (Data != NULL) { CopyMem (&RscData->Data, Data, Data->HeaderSize + Data->Size); + } else { + ZeroMem (&RscData->Data, sizeof (RscData->Data)); + RscData->Data.HeaderSize = sizeof (RscData->Data); } Status = gBS->SignalEvent (CallbackEntry->Event); -- cgit v1.2.3