From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mout02.posteo.de (mout02.posteo.de [185.67.36.66]) by mx.groups.io with SMTP id smtpd.web12.20842.1628502712467396169 for ; Mon, 09 Aug 2021 02:51:53 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@posteo.de header.s=2017 header.b=G/9327X2; spf=pass (domain: posteo.de, ip: 185.67.36.66, mailfrom: mhaeuser@posteo.de) Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id CDDFC240109 for ; Mon, 9 Aug 2021 11:51:50 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.de; s=2017; t=1628502710; bh=11KewpPMcR2qRSi75idgCsHIyr1XbI3k/Kb24sJRP7s=; h=From:To:Cc:Subject:Date:From; b=G/9327X281mJyDShl7xheqpTE0FJVA015j9asla9YCM8kBHm4l/DOL32HkNK0+Fa4 1QEflGUcnWo+yEn4Z0f59mpDjkdotfHnmxG8FXMtLIN1khUrzJz0Cz5OTC0mqqRDaI j2yoyBW7GWHxYZX7fVckAnQ7qv6H5l72/Eg/y4V+zoOhEv0P/lNTcSfQKdvFrJgY/v WizjCZdsgRR8lubiQRna0h9aZhUuKK51JH/UeBLxwvLPmWu4Z4oJJonhDqoSgVNqEX +mbGy/48OZQdqYhg6cOuUyLkgw3MzwUTNqr1s+Op9RZ01swnUiWt7MdYHG4aPKku5+ wVDQ90jk9/+Tg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4Gjrvp2Pbbz6tmF; Mon, 9 Aug 2021 11:51:50 +0200 (CEST) From: =?UTF-8?B?TWFydmluIEjDpHVzZXI=?= To: devel@edk2.groups.io Cc: Michael D Kinney , Liming Gao , Zhiguang Liu , Vitaly Cheptsov Subject: [PATCH v2 1/2] MdePkg/BaseLib: Fix unaligned API prototypes Date: Mon, 9 Aug 2021 09:51:22 +0000 Message-Id: In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable C prohibits not only dereferencing but also casting to unaligned pointers. Thus, the current set of unaligned APIs cannot be called safely. Update their prototypes to take VOID * pointers, which must be able to represent any valid pointer. Cc: Michael D Kinney Cc: Liming Gao Cc: Zhiguang Liu Cc: Vitaly Cheptsov Signed-off-by: Marvin H=C3=A4user --- MdePkg/Library/BaseLib/Arm/Unaligned.c | 14 ++++----- MdePkg/Library/BaseLib/Unaligned.c | 32 ++++++++++---------- MdePkg/Include/Library/BaseLib.h | 16 +++++----- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/MdePkg/Library/BaseLib/Arm/Unaligned.c b/MdePkg/Library/BaseLi= b/Arm/Unaligned.c index e9934e7003cb..57f19fc44e0b 100644 --- a/MdePkg/Library/BaseLib/Arm/Unaligned.c +++ b/MdePkg/Library/BaseLib/Arm/Unaligned.c @@ -59,7 +59,7 @@ ReadUnaligned16 ( UINT16=0D EFIAPI=0D WriteUnaligned16 (=0D - OUT UINT16 *Buffer,=0D + OUT VOID *Buffer,=0D IN UINT16 Value=0D )=0D {=0D @@ -87,7 +87,7 @@ WriteUnaligned16 ( UINT32=0D EFIAPI=0D ReadUnaligned24 (=0D - IN CONST UINT32 *Buffer=0D + IN CONST VOID *Buffer=0D )=0D {=0D ASSERT (Buffer !=3D NULL);=0D @@ -116,7 +116,7 @@ ReadUnaligned24 ( UINT32=0D EFIAPI=0D WriteUnaligned24 (=0D - OUT UINT32 *Buffer,=0D + OUT VOID *Buffer,=0D IN UINT32 Value=0D )=0D {=0D @@ -143,7 +143,7 @@ WriteUnaligned24 ( UINT32=0D EFIAPI=0D ReadUnaligned32 (=0D - IN CONST UINT32 *Buffer=0D + IN CONST VOID *Buffer=0D )=0D {=0D UINT16 LowerBytes;=0D @@ -175,7 +175,7 @@ ReadUnaligned32 ( UINT32=0D EFIAPI=0D WriteUnaligned32 (=0D - OUT UINT32 *Buffer,=0D + OUT VOID *Buffer,=0D IN UINT32 Value=0D )=0D {=0D @@ -202,7 +202,7 @@ WriteUnaligned32 ( UINT64=0D EFIAPI=0D ReadUnaligned64 (=0D - IN CONST UINT64 *Buffer=0D + IN CONST VOID *Buffer=0D )=0D {=0D UINT32 LowerBytes;=0D @@ -234,7 +234,7 @@ ReadUnaligned64 ( UINT64=0D EFIAPI=0D WriteUnaligned64 (=0D - OUT UINT64 *Buffer,=0D + OUT VOID *Buffer,=0D IN UINT64 Value=0D )=0D {=0D diff --git a/MdePkg/Library/BaseLib/Unaligned.c b/MdePkg/Library/BaseLib/Un= aligned.c index a419cb85e53c..3041adcde606 100644 --- a/MdePkg/Library/BaseLib/Unaligned.c +++ b/MdePkg/Library/BaseLib/Unaligned.c @@ -26,12 +26,12 @@ UINT16=0D EFIAPI=0D ReadUnaligned16 (=0D - IN CONST UINT16 *Buffer=0D + IN CONST VOID *Buffer=0D )=0D {=0D ASSERT (Buffer !=3D NULL);=0D =0D - return *Buffer;=0D + return *(CONST UINT16 *) Buffer;=0D }=0D =0D /**=0D @@ -52,13 +52,13 @@ ReadUnaligned16 ( UINT16=0D EFIAPI=0D WriteUnaligned16 (=0D - OUT UINT16 *Buffer,=0D + OUT VOID *Buffer,=0D IN UINT16 Value=0D )=0D {=0D ASSERT (Buffer !=3D NULL);=0D =0D - return *Buffer =3D Value;=0D + return *(UINT16 *) Buffer =3D Value;=0D }=0D =0D /**=0D @@ -77,12 +77,12 @@ WriteUnaligned16 ( UINT32=0D EFIAPI=0D ReadUnaligned24 (=0D - IN CONST UINT32 *Buffer=0D + IN CONST VOID *Buffer=0D )=0D {=0D ASSERT (Buffer !=3D NULL);=0D =0D - return *Buffer & 0xffffff;=0D + return *(CONST UINT32 *) Buffer & 0xffffff;=0D }=0D =0D /**=0D @@ -103,13 +103,13 @@ ReadUnaligned24 ( UINT32=0D EFIAPI=0D WriteUnaligned24 (=0D - OUT UINT32 *Buffer,=0D + OUT VOID *Buffer,=0D IN UINT32 Value=0D )=0D {=0D ASSERT (Buffer !=3D NULL);=0D =0D - *Buffer =3D BitFieldWrite32 (*Buffer, 0, 23, Value);=0D + *(UINT32 *) Buffer =3D BitFieldWrite32 (*(CONST UINT32 *) Buffer, 0, 23,= Value);=0D return Value;=0D }=0D =0D @@ -129,12 +129,12 @@ WriteUnaligned24 ( UINT32=0D EFIAPI=0D ReadUnaligned32 (=0D - IN CONST UINT32 *Buffer=0D + IN CONST VOID *Buffer=0D )=0D {=0D ASSERT (Buffer !=3D NULL);=0D =0D - return *Buffer;=0D + return *(CONST UINT32 *) Buffer;=0D }=0D =0D /**=0D @@ -155,13 +155,13 @@ ReadUnaligned32 ( UINT32=0D EFIAPI=0D WriteUnaligned32 (=0D - OUT UINT32 *Buffer,=0D + OUT VOID *Buffer,=0D IN UINT32 Value=0D )=0D {=0D ASSERT (Buffer !=3D NULL);=0D =0D - return *Buffer =3D Value;=0D + return *(UINT32 *) Buffer =3D Value;=0D }=0D =0D /**=0D @@ -180,12 +180,12 @@ WriteUnaligned32 ( UINT64=0D EFIAPI=0D ReadUnaligned64 (=0D - IN CONST UINT64 *Buffer=0D + IN CONST VOID *Buffer=0D )=0D {=0D ASSERT (Buffer !=3D NULL);=0D =0D - return *Buffer;=0D + return *(CONST UINT64 *) Buffer;=0D }=0D =0D /**=0D @@ -206,11 +206,11 @@ ReadUnaligned64 ( UINT64=0D EFIAPI=0D WriteUnaligned64 (=0D - OUT UINT64 *Buffer,=0D + OUT VOID *Buffer,=0D IN UINT64 Value=0D )=0D {=0D ASSERT (Buffer !=3D NULL);=0D =0D - return *Buffer =3D Value;=0D + return *(UINT64 *) Buffer =3D Value;=0D }=0D diff --git a/MdePkg/Include/Library/BaseLib.h b/MdePkg/Include/Library/Base= Lib.h index 2452c1d92e51..4d30f0539c6b 100644 --- a/MdePkg/Include/Library/BaseLib.h +++ b/MdePkg/Include/Library/BaseLib.h @@ -3420,7 +3420,7 @@ DivS64x64Remainder ( UINT16=0D EFIAPI=0D ReadUnaligned16 (=0D - IN CONST UINT16 *Buffer=0D + IN CONST VOID *Buffer=0D );=0D =0D =0D @@ -3442,7 +3442,7 @@ ReadUnaligned16 ( UINT16=0D EFIAPI=0D WriteUnaligned16 (=0D - OUT UINT16 *Buffer,=0D + OUT VOID *Buffer,=0D IN UINT16 Value=0D );=0D =0D @@ -3463,7 +3463,7 @@ WriteUnaligned16 ( UINT32=0D EFIAPI=0D ReadUnaligned24 (=0D - IN CONST UINT32 *Buffer=0D + IN CONST VOID *Buffer=0D );=0D =0D =0D @@ -3485,7 +3485,7 @@ ReadUnaligned24 ( UINT32=0D EFIAPI=0D WriteUnaligned24 (=0D - OUT UINT32 *Buffer,=0D + OUT VOID *Buffer,=0D IN UINT32 Value=0D );=0D =0D @@ -3506,7 +3506,7 @@ WriteUnaligned24 ( UINT32=0D EFIAPI=0D ReadUnaligned32 (=0D - IN CONST UINT32 *Buffer=0D + IN CONST VOID *Buffer=0D );=0D =0D =0D @@ -3528,7 +3528,7 @@ ReadUnaligned32 ( UINT32=0D EFIAPI=0D WriteUnaligned32 (=0D - OUT UINT32 *Buffer,=0D + OUT VOID *Buffer,=0D IN UINT32 Value=0D );=0D =0D @@ -3549,7 +3549,7 @@ WriteUnaligned32 ( UINT64=0D EFIAPI=0D ReadUnaligned64 (=0D - IN CONST UINT64 *Buffer=0D + IN CONST VOID *Buffer=0D );=0D =0D =0D @@ -3571,7 +3571,7 @@ ReadUnaligned64 ( UINT64=0D EFIAPI=0D WriteUnaligned64 (=0D - OUT UINT64 *Buffer,=0D + OUT VOID *Buffer,=0D IN UINT64 Value=0D );=0D =0D --=20 2.31.1