From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: redhat.com, ip: 209.132.183.28, mailfrom: lersek@redhat.com) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by groups.io with SMTP; Tue, 23 Apr 2019 03:30:49 -0700 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AD792307D95F; Tue, 23 Apr 2019 10:30:48 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-120-235.rdu2.redhat.com [10.10.120.235]) by smtp.corp.redhat.com (Postfix) with ESMTP id 948FF5D71D; Tue, 23 Apr 2019 10:30:47 +0000 (UTC) Subject: Re: [edk2-devel] [PATCH v2 3/5] BaseTools/PiFirmwareFile: fix undefined behavior in SECTION_SIZE From: "Laszlo Ersek" To: Bob Feng , Liming Gao , Yonghong Zhu Cc: edk2-devel-groups-io Reply-To: devel@edk2.groups.io, lersek@redhat.com References: <20190418174710.12236-1-lersek@redhat.com> <20190418174710.12236-4-lersek@redhat.com> Message-ID: <816906c6-cc85-52d9-7562-1b09f8b48402@redhat.com> Date: Tue, 23 Apr 2019 12:30:46 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20190418174710.12236-4-lersek@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.48]); Tue, 23 Apr 2019 10:30:48 +0000 (UTC) Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Bob, Liming, Yonghong, On 04/18/19 19:47, Laszlo Ersek wrote: > Sync SECTION_SIZE() from MdePkg to BaseTools, from an earlier patch in > this series. > > Cc: Bob Feng > Cc: Liming Gao > Cc: Yonghong Zhu > Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=1710 > Signed-off-by: Laszlo Ersek > --- > > Notes: > v2: > > - sync with the v2 MdePkg/PiFirmwareFile SECTION_SIZE patch > > BaseTools/Source/C/Include/Common/PiFirmwareFile.h | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) can one of you please review this patch? Thanks Laszlo > diff --git a/BaseTools/Source/C/Include/Common/PiFirmwareFile.h b/BaseTools/Source/C/Include/Common/PiFirmwareFile.h > index 5bc871df4855..7d8acb669b69 100644 > --- a/BaseTools/Source/C/Include/Common/PiFirmwareFile.h > +++ b/BaseTools/Source/C/Include/Common/PiFirmwareFile.h > @@ -300,8 +300,15 @@ typedef struct { > CHAR16 VersionString[1]; > } EFI_VERSION_SECTION2; > > -#define SECTION_SIZE(SectionHeaderPtr) \ > - ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) SectionHeaderPtr)->Size) & 0x00ffffff)) > +// > +// The argument passed as the SectionHeaderPtr parameter to the SECTION_SIZE() > +// function-like macro below must not have side effects: SectionHeaderPtr is > +// evaluated multiple times. > +// > +#define SECTION_SIZE(SectionHeaderPtr) ((UINT32) ( \ > + (((EFI_COMMON_SECTION_HEADER *) (SectionHeaderPtr))->Size[0] ) | \ > + (((EFI_COMMON_SECTION_HEADER *) (SectionHeaderPtr))->Size[1] << 8) | \ > + (((EFI_COMMON_SECTION_HEADER *) (SectionHeaderPtr))->Size[2] << 16))) > > #pragma pack() > >