The change is good. Reviewed-by: Liming Gao <[email protected]>
>-----Original Message----- >From: edk2-devel [mailto:[email protected]] On Behalf Of >Marvin H?user >Sent: Thursday, November 01, 2018 4:09 AM >To: [email protected] >Cc: Kinney, Michael D <[email protected]>; Gao, Liming ><[email protected]> >Subject: [edk2] [PATCH 1/1] MdePkg/Base.h: Implement BASE_CR() via >OFFSET_OF(). > >Replace the current NULL pointer dereference to retrieve Field's >offset with a call to OFFSET_OF(). This is implemented via >__builtin_offsetof for GCC and Clang, which eliminates UB caught by >Clang UndefinedBehaviorSanitizer. > >Contributed-under: TianoCore Contribution Agreement 1.1 >Signed-off-by: Marvin Haeuser <[email protected]> >--- > MdePkg/Include/Base.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >diff --git a/MdePkg/Include/Base.h b/MdePkg/Include/Base.h >index 523192fd79fc..bc877d8125a5 100644 >--- a/MdePkg/Include/Base.h >+++ b/MdePkg/Include/Base.h >@@ -869,7 +869,7 @@ typedef UINTN *BASE_LIST; > @return A pointer to the structure from one of it's elements. > > **/ >-#define BASE_CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - >(CHAR8 *) &(((TYPE *) 0)->Field))) >+#define BASE_CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - >OFFSET_OF (TYPE, Field))) > > /** > Rounds a value up to the next boundary using a specified alignment. >-- >2.19.1.windows.1 > >_______________________________________________ >edk2-devel mailing list >[email protected] >https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

