From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.byosoft.com.cn (mail.byosoft.com.cn [58.240.74.242]) by mx.groups.io with SMTP id smtpd.web08.1563.1625015188079204293 for ; Tue, 29 Jun 2021 18:06:29 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=none, err=permanent DNS error (domain: byosoft.com.cn, ip: 58.240.74.242, mailfrom: gaoliming@byosoft.com.cn) Received: from DESKTOPS6D0PVI ([58.246.60.130]) (envelope-sender ) by 192.168.6.13 with ESMTP for ; Wed, 30 Jun 2021 09:06:25 +0800 X-WM-Sender: gaoliming@byosoft.com.cn X-Originating-IP: 58.246.60.130 X-WM-AuthFlag: YES X-WM-AuthUser: gaoliming@byosoft.com.cn From: "gaoliming" To: , , Cc: , References: <20210610045641.1466-1-nickle.wang@hpe.com> <8eb4dbca-2ef5-888b-60f9-df28b05107ee@redhat.com> In-Reply-To: <8eb4dbca-2ef5-888b-60f9-df28b05107ee@redhat.com> Subject: =?UTF-8?B?5Zue5aSNOiBbZWRrMi1kZXZlbF0gW1BBVENIXSBNZGVNb2R1bGVQa2cvUmVndWxhckV4cHJlc3Npb25EeGU6IEZpeCBtZW1vcnkgYXNzZXJ0IGluIEZyZWVQb29sKCk=?= Date: Wed, 30 Jun 2021 09:06:26 +0800 Message-ID: <004f01d76d4c$26fbd7a0$74f386e0$@byosoft.com.cn> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQIr4gec0k5UNJJoSy2oV2nPWMn8PgHHohZeqnSWkRA= Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Content-Language: zh-cn Laszlo: Yes. I agree to add OnigurumaUefiPort.c into ECC exception in MdeModulePk= g.ci.yaml. Nickle: Can you provide the patch to update MdeModulePkg.ci.yaml? Thanks Liming > -----=E9=82=AE=E4=BB=B6=E5=8E=9F=E4=BB=B6----- > =E5=8F=91=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io = =E4=BB=A3=E8=A1=A8 Laszlo Ersek > =E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4: 2021=E5=B9=B46=E6=9C=8829=E6=97=A5= 22:52 > =E6=94=B6=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io; nickle.wang@hpe.com > =E6=8A=84=E9=80=81: gaoliming@byosoft.com.cn; jian.j.wang@intel.com; > hao.a.wu@intel.com > =E4=B8=BB=E9=A2=98: Re: [edk2-devel] [PATCH] MdeModulePkg/RegularExpress= ionDxe: Fix > memory assert in FreePool() >=20 > On 06/10/21 06:56, Nickle Wang wrote: > > Memory buffer that is allocated by malloc() and realloc() will be > > shifted by 8 bytes because Oniguruma keeps its memory signature. This = 8 > > bytes shift is not handled while calling free() to release memory. Add > > free() function to check Oniguruma signature before release memory > > because memory buffer is not touched when using calloc(). > > > > Signed-off-by: Nickle Wang > > --- > > .../RegularExpressionDxe/OnigurumaUefiPort.c | 19 > ++++++++++++++++++- > > .../RegularExpressionDxe/OnigurumaUefiPort.h | 14 ++------------ > > 2 files changed, 20 insertions(+), 13 deletions(-) > > > > diff --git > a/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.c > b/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.c > > index 9aa7b0a68e..5c34324db8 100644 > > --- > a/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.c > > +++ > b/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.c > > @@ -2,7 +2,7 @@ > > > > Module to rewrite stdlib references within Oniguruma > > > > - (C) Copyright 2014-2015 Hewlett Packard Enterprise Development > LP
> > + (C) Copyright 2014-2021 Hewlett Packard Enterprise Development > LP
> > Copyright (c) 2020, Intel Corporation. All rights reserved.
> > > > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -96,3 +96,20 @@ void* memset (void *dest, char ch, unsigned int > count) > > return SetMem (dest, count, ch); > > } > > > > +void free(void *ptr) > > +{ > > + VOID *EvalOnce; > > + ONIGMEM_HEAD *PoolHdr; > > + > > + EvalOnce =3D ptr; > > + if (EvalOnce =3D=3D NULL) { > > + return; > > + } > > + > > + PoolHdr =3D (ONIGMEM_HEAD *)EvalOnce - 1; > > + if (PoolHdr->Signature =3D=3D ONIGMEM_HEAD_SIGNATURE) { > > + FreePool (PoolHdr); > > + } else { > > + FreePool (EvalOnce); > > + } > > +} > > diff --git > a/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.h > b/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.h > > index 20b75c3361..0bdb7be529 100644 > > --- > a/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.h > > +++ > b/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.h > > @@ -2,7 +2,7 @@ > > > > Module to rewrite stdlib references within Oniguruma > > > > - (C) Copyright 2014-2015 Hewlett Packard Enterprise Development > LP
> > + (C) Copyright 2014-2021 Hewlett Packard Enterprise Development > LP
> > Copyright (c) 2020, Intel Corporation. All rights reserved.
> > > > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -46,17 +46,6 @@ typedef INTN intptr_t; > > #endif > > > > #define calloc(n,s) AllocateZeroPool((n)*(s)) > > - > > -#define free(p) \ > > - do { \ > > - VOID *EvalOnce; \ > > - \ > > - EvalOnce =3D (p); \ > > - if (EvalOnce !=3D NULL) { \ > > - FreePool (EvalOnce); \ > > - } \ > > - } while (FALSE) > > - > > #define xmemmove(Dest,Src,Length) CopyMem(Dest,Src,Length) > > #define xmemcpy(Dest,Src,Length) CopyMem(Dest,Src,Length) > > #define xmemset(Buffer,Value,Length) SetMem(Buffer,Length,Value) > > @@ -98,6 +87,7 @@ void* malloc(size_t size); > > void* realloc(void *ptr, size_t size); > > void* memcpy (void *dest, const void *src, unsigned int count); > > void* memset (void *dest, char ch, unsigned int count); > > +void free(void *ptr); > > > > #define exit(n) ASSERT(FALSE); > > > > >=20 > This patch cannot be merged, due to a number of EccCheck complaints: >=20 > 2021-06-21T01:44:13.4327861Z PROGRESS - --Running MdeModulePkg: > EccCheck Test NO-TARGET -- > 2021-06-21T01:44:20.4922300Z ERROR - > 2021-06-21T01:44:20.4924178Z ERROR - EFI coding style error > 2021-06-21T01:44:20.4925524Z ERROR - *Error code: 4002 > 2021-06-21T01:44:20.4927323Z ERROR - *Function header doesn't exist > 2021-06-21T01:44:20.4936437Z ERROR - *file: > //home/vsts/work/1/s/MdeModulePkg/Universal/RegularExpressionDxe/Oni > gurumaUefiPort.c > 2021-06-21T01:44:20.4937669Z ERROR - *Line number: 99 > 2021-06-21T01:44:20.4938737Z ERROR - *Function [free] has NO comment > immediately preceding it. > 2021-06-21T01:44:20.4945489Z ERROR - > 2021-06-21T01:44:20.4951382Z ERROR - EFI coding style error > 2021-06-21T01:44:20.4960149Z ERROR - *Error code: 4002 > 2021-06-21T01:44:20.4961161Z ERROR - *Function header doesn't exist > 2021-06-21T01:44:20.4966674Z ERROR - *file: > //home/vsts/work/1/s/MdeModulePkg/Universal/RegularExpressionDxe/Oni > gurumaUefiPort.h > 2021-06-21T01:44:20.4973232Z ERROR - *Line number: 90 > 2021-06-21T01:44:20.4978337Z ERROR - *Function [free] has NO comment > immediately preceding it. > 2021-06-21T01:44:20.4981257Z ERROR - > 2021-06-21T01:44:20.4983805Z ERROR - EFI coding style error > 2021-06-21T01:44:20.4986537Z ERROR - *Error code: 5001 > 2021-06-21T01:44:20.4989508Z ERROR - *Return type of a function should > exist and in the first line > 2021-06-21T01:44:20.4997043Z ERROR - *file: > //home/vsts/work/1/s/MdeModulePkg/Universal/RegularExpressionDxe/Oni > gurumaUefiPort.h > 2021-06-21T01:44:20.4997804Z ERROR - *Line number: 90 > 2021-06-21T01:44:20.4998331Z ERROR - *[free] Return Type should appear > on its own line > 2021-06-21T01:44:20.4998762Z ERROR - > 2021-06-21T01:44:20.4999175Z ERROR - EFI coding style error > 2021-06-21T01:44:20.5017351Z ERROR - *Error code: 5003 > 2021-06-21T01:44:20.5023282Z ERROR - *Function name should be left > justified, followed by the beginning of the parameter list, with the clo= sing > parenthesis on its own line, indented two spaces > 2021-06-21T01:44:20.5024931Z ERROR - *file: > //home/vsts/work/1/s/MdeModulePkg/Universal/RegularExpressionDxe/Oni > gurumaUefiPort.c > 2021-06-21T01:44:20.5025818Z ERROR - *Line number: 99 > 2021-06-21T01:44:20.5026960Z ERROR - *Function name [free] should > appear at the start of a line > 2021-06-21T01:44:20.5027533Z ERROR - > 2021-06-21T01:44:20.5027982Z ERROR - EFI coding style error > 2021-06-21T01:44:20.5028454Z ERROR - *Error code: 5003 > 2021-06-21T01:44:20.5029279Z ERROR - *Function name should be left > justified, followed by the beginning of the parameter list, with the clo= sing > parenthesis on its own line, indented two spaces > 2021-06-21T01:44:20.5030177Z ERROR - *file: > //home/vsts/work/1/s/MdeModulePkg/Universal/RegularExpressionDxe/Oni > gurumaUefiPort.h > 2021-06-21T01:44:20.5030770Z ERROR - *Line number: 90 > 2021-06-21T01:44:20.5031330Z ERROR - *Function name [free] should > appear at the start of a line > 2021-06-21T01:44:20.5031788Z ERROR - > 2021-06-21T01:44:20.5032240Z ERROR - EFI coding style error > 2021-06-21T01:44:20.5032706Z ERROR - *Error code: 5003 > 2021-06-21T01:44:20.5033554Z ERROR - *Function name should be left > justified, followed by the beginning of the parameter list, with the clo= sing > parenthesis on its own line, indented two spaces > 2021-06-21T01:44:20.5036470Z ERROR - *file: > //home/vsts/work/1/s/MdeModulePkg/Universal/RegularExpressionDxe/Oni > gurumaUefiPort.h > 2021-06-21T01:44:20.5040063Z ERROR - *Line number: 90 > 2021-06-21T01:44:20.5043513Z ERROR - *Parameter ptr should be in its own > line. > 2021-06-21T01:44:20.5046782Z ERROR - > 2021-06-21T01:44:20.5049909Z ERROR - EFI coding style error > 2021-06-21T01:44:20.5053571Z ERROR - *Error code: 5003 > 2021-06-21T01:44:20.5057415Z ERROR - *Function name should be left > justified, followed by the beginning of the parameter list, with the clo= sing > parenthesis on its own line, indented two spaces > 2021-06-21T01:44:20.5066200Z ERROR - *file: > //home/vsts/work/1/s/MdeModulePkg/Universal/RegularExpressionDxe/Oni > gurumaUefiPort.h > 2021-06-21T01:44:20.5066831Z ERROR - *Line number: 90 > 2021-06-21T01:44:20.5067378Z ERROR - *')' should be on a new line and > indented two spaces > 2021-06-21T01:44:20.5067799Z ERROR - > 2021-06-21T01:44:20.5068211Z ERROR - EFI coding style error > 2021-06-21T01:44:20.5070600Z ERROR - *Error code: 7001 > 2021-06-21T01:44:20.5074448Z ERROR - *There should be no use of int, > unsigned, char, void, long in any .c, .h or .asl files > 2021-06-21T01:44:20.5077965Z ERROR - *file: > //home/vsts/work/1/s/MdeModulePkg/Universal/RegularExpressionDxe/Oni > gurumaUefiPort.c > 2021-06-21T01:44:20.5081222Z ERROR - *Line number: 110 > 2021-06-21T01:44:20.5084248Z ERROR - *Parameter ptr > 2021-06-21T01:44:20.5090115Z ERROR - > 2021-06-21T01:44:20.5090517Z ERROR - EFI coding style error > 2021-06-21T01:44:20.5090923Z ERROR - *Error code: 7001 > 2021-06-21T01:44:20.5093481Z ERROR - *There should be no use of int, > unsigned, char, void, long in any .c, .h or .asl files > 2021-06-21T01:44:20.5096387Z ERROR - *file: > //home/vsts/work/1/s/MdeModulePkg/Universal/RegularExpressionDxe/Oni > gurumaUefiPort.h > 2021-06-21T01:44:20.5099658Z ERROR - *Line number: 90 > 2021-06-21T01:44:20.5103008Z ERROR - *free Return type void > 2021-06-21T01:44:20.5105878Z ERROR - > 2021-06-21T01:44:20.5108537Z ERROR - EFI coding style error > 2021-06-21T01:44:20.5111630Z ERROR - *Error code: 7001 > 2021-06-21T01:44:20.5115083Z ERROR - *There should be no use of int, > unsigned, char, void, long in any .c, .h or .asl files > 2021-06-21T01:44:20.5118600Z ERROR - *file: > //home/vsts/work/1/s/MdeModulePkg/Universal/RegularExpressionDxe/Oni > gurumaUefiPort.h > 2021-06-21T01:44:20.5126189Z ERROR - *Line number: 90 > 2021-06-21T01:44:20.5142100Z ERROR - *Parameter ptr > 2021-06-21T01:44:20.5142574Z ERROR - > 2021-06-21T01:44:20.5142979Z ERROR - EFI coding style error > 2021-06-21T01:44:20.5143429Z ERROR - *Error code: 8005 > 2021-06-21T01:44:20.5144332Z ERROR - *Variable name does not follow the > rules: 1. First character should be upper case 2. Must contain lower cas= e > characters 3. No white space characters 4. Global variable name must sta= rt > with a 'g' > 2021-06-21T01:44:20.5145416Z ERROR - *file: > //home/vsts/work/1/s/MdeModulePkg/Universal/RegularExpressionDxe/Oni > gurumaUefiPort.h > 2021-06-21T01:44:20.5146050Z ERROR - *Line number: 90 > 2021-06-21T01:44:20.5146555Z ERROR - *Parameter [ptr] NOT follow > naming convention. > 2021-06-21T01:44:20.5146963Z ERROR - > 2021-06-21T01:44:20.5147366Z ERROR - EFI coding style error > 2021-06-21T01:44:20.5147794Z ERROR - *Error code: 8006 > 2021-06-21T01:44:20.5148562Z ERROR - *Function name does not follow the > rules: 1. First character should be upper case 2. Must contain lower cas= e > characters 3. No white space characters > 2021-06-21T01:44:20.5149399Z ERROR - *file: > //home/vsts/work/1/s/MdeModulePkg/Universal/RegularExpressionDxe/Oni > gurumaUefiPort.c > 2021-06-21T01:44:20.5149932Z ERROR - *Line number: 99 > 2021-06-21T01:44:20.5150445Z ERROR - *The function name [free] does not > follow the rules > 2021-06-21T01:44:20.5155470Z ERROR - --->Test Failed: EccCheck Test > NO-TARGET returned 1 >=20 > These are all (or mostly) related to preexistent code, so I think the Ec= cCheck > plugin config should be updated in MdeModulePkg, to permit an exception = for > these files. >=20 > For now, I've closed witho= ut > merging it. >=20 > Thanks > Laszlo >=20 >=20 >=20 >=20 >=20