From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mout01.posteo.de (mout01.posteo.de [185.67.36.65]) by mx.groups.io with SMTP id smtpd.web08.15495.1629058413463653517 for ; Sun, 15 Aug 2021 13:13:34 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@posteo.de header.s=2017 header.b=ZifZv04e; spf=pass (domain: posteo.de, ip: 185.67.36.65, mailfrom: mhaeuser@posteo.de) Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id 94A7124002B for ; Sun, 15 Aug 2021 22:13:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.de; s=2017; t=1629058411; bh=ZyE43qdmPzyp3BfeCG+yaqreEHbX8KBZUCbUn+DgVTM=; h=From:To:Cc:Subject:Date:From; b=ZifZv04esYIOMedhSQAI44Po4RgtEDfaicei6h1XH5xMq3fR+kmPHWK5iGCQg/G7I /oIX+1zAIgsqiidlx0yupnzpus2TfI52ZN5rSg8t2GKPFlTzekgQ0d9XS1p+BJt/8j Etn2BrvbSb4h8AsbDIm57ILR+sdtKh+tDGLSXQy4ytuRjfowGIGrc8EUQZCIb0OsFo r+PXECebldpN2rnY3RgSS+es8UwbBOcslf6lKLdds55a5H4brx2ZcN4BFBFsYb77tK YzxBPTKU1QdXstqbLBGtZiUGP9FDiW3Z6CywoLVokeOZA3PqNdlLnTNs/qUIYYckfH jDhzfOqVybL+Q== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4GnpQM1Cvrz9rxV; Sun, 15 Aug 2021 22:13:31 +0200 (CEST) From: =?UTF-8?B?TWFydmluIEjDpHVzZXI=?= To: devel@edk2.groups.io Cc: Jian J Wang , Hao A Wu , Vitaly Cheptsov Subject: [PATCH 1/1] MdeModulePkg/EbcDxe: Mitigate memcpy intrinsics Date: Sun, 15 Aug 2021 20:11:56 +0000 Message-Id: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Assignments of structure values cause the emission of memcpy() intrinsics by the CLANG38 toolchain. Substitute the assignments with calls to CopyMem() to mitigate the issue. Cc: Jian J Wang Cc: Hao A Wu Cc: Vitaly Cheptsov Signed-off-by: Marvin H=C3=A4user --- MdeModulePkg/Universal/EbcDxe/EbcDebugger/Edb.c | 6 +++++- MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbCmdBreakpoint.c | 6 +++++- MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbHook.c | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/Edb.c b/MdeModulePkg= /Universal/EbcDxe/EbcDebugger/Edb.c index 611b2de5d81f..e417f4870f3d 100644 --- a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/Edb.c +++ b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/Edb.c @@ -219,7 +219,11 @@ EdbCheckBreakpoint ( //=0D // If hit, record current breakpoint=0D //=0D - DebuggerPrivate->DebuggerBreakpointContext[EFI_DEBUGGER_BREAKPOINT_M= AX] =3D DebuggerPrivate->DebuggerBreakpointContext[Index];=0D + CopyMem (=0D + &DebuggerPrivate->DebuggerBreakpointContext[EFI_DEBUGGER_BREAKPOIN= T_MAX],=0D + &DebuggerPrivate->DebuggerBreakpointContext[Index],=0D + sizeof (DebuggerPrivate->DebuggerBreakpointContext[EFI_DEBUGGER_BR= EAKPOINT_MAX])=0D + );=0D DebuggerPrivate->DebuggerBreakpointContext[EFI_DEBUGGER_BREAKPOINT_M= AX].State =3D TRUE;=0D //=0D // Do not set Breakpoint flag. We record the address here just let i= t not patch breakpoint address when de-init.=0D diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbCmdBreakpoint.c b= /MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbCmdBreakpoint.c index e0c797be247f..5d32c684066e 100644 --- a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbCmdBreakpoint.c +++ b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbCmdBreakpoint.c @@ -158,7 +158,11 @@ DebuggerBreakpointDel ( // Delete this breakpoint=0D //=0D for (BpIndex =3D Index; BpIndex < DebuggerPrivate->DebuggerBreakpointCou= nt - 1; BpIndex++) {=0D - DebuggerPrivate->DebuggerBreakpointContext[BpIndex] =3D DebuggerPrivat= e->DebuggerBreakpointContext[BpIndex + 1];=0D + CopyMem (=0D + &DebuggerPrivate->DebuggerBreakpointContext[BpIndex],=0D + &DebuggerPrivate->DebuggerBreakpointContext[BpIndex + 1],=0D + sizeof (DebuggerPrivate->DebuggerBreakpointContext[BpIndex])=0D + );=0D }=0D ZeroMem (=0D &DebuggerPrivate->DebuggerBreakpointContext[BpIndex],=0D diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbHook.c b/MdeModul= ePkg/Universal/EbcDxe/EbcDebugger/EdbHook.c index 83257a2c25fe..1bfe5240c760 100644 --- a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbHook.c +++ b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbHook.c @@ -230,7 +230,11 @@ EbcDebuggerPushTraceDestEntry ( //=0D ASSERT (mDebuggerPrivate.TraceEntry[EFI_DEBUGGER_TRACE_MAX].Type =3D= =3D Type);=0D for (Index =3D 0; Index < EFI_DEBUGGER_TRACE_MAX; Index++) {=0D - mDebuggerPrivate.TraceEntry[Index] =3D mDebuggerPrivate.TraceEntry[I= ndex + 1];=0D + CopyMem (=0D + &mDebuggerPrivate.TraceEntry[Index],=0D + &mDebuggerPrivate.TraceEntry[Index + 1],=0D + sizeof (mDebuggerPrivate.TraceEntry[Index])=0D + );=0D }=0D mDebuggerPrivate.TraceEntry[EFI_DEBUGGER_CALLSTACK_MAX - 1].DestAddres= s =3D DestEntry;=0D mDebuggerPrivate.TraceEntryCount =3D EFI_DEBUGGER_TRACE_MAX;=0D --=20 2.31.1