From: "Bi, Dandan" <dandan.bi@intel.com>
To: Laszlo Ersek <lersek@redhat.com>,
"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: "Zeng, Star" <star.zeng@intel.com>,
"Gao, Liming" <liming.gao@intel.com>,
"Bi, Dandan" <dandan.bi@intel.com>
Subject: Re: [patch] MdeModulePkg/HiiDB: Fix incorrect structure convention for checkbox
Date: Mon, 8 Oct 2018 14:32:57 +0000 [thread overview]
Message-ID: <3C0D5C461C9E904E8F62152F6274C0BB3BBC2121@shsmsx102.ccr.corp.intel.com> (raw)
In-Reply-To: <d92b624d-edf8-aed3-a192-18dcfc619db6@redhat.com>
Hi Laszlo,
> -----Original Message-----
> From: Laszlo Ersek [mailto:lersek@redhat.com]
> Sent: Monday, October 08, 2018 8:19 PM
> To: Bi, Dandan <dandan.bi@intel.com>; edk2-devel@lists.01.org
> Cc: Zeng, Star <star.zeng@intel.com>; Gao, Liming <liming.gao@intel.com>
> Subject: Re: [edk2] [patch] MdeModulePkg/HiiDB: Fix incorrect structure
> convention for checkbox
>
> Hi Dandan,
>
> On 10/08/18 03:29, Dandan Bi wrote:
> > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1224
> >
> > When covert IFR binary to EFI_IFR_CHECKBOX structure, Current code has
> > following incorrect code logic:
> > IfrCheckBox = (EFI_IFR_CHECKBOX *) (IfrOpHdr + 1); The correct one
> > should be:
> > IfrCheckBox = (EFI_IFR_CHECKBOX *) IfrOpHdr;
> >
> > This patch is to fix this bug.
> >
> > Cc: Liming Gao <liming.gao@intel.com>
> > Cc: Star Zeng <star.zeng@intel.com>
> > Contributed-under: TianoCore Contribution Agreement 1.1
> > Signed-off-by: Dandan Bi <dandan.bi@intel.com>
> > ---
> > MdeModulePkg/Universal/HiiDatabaseDxe/Database.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c
> > b/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c
> > index 45448c5198..664687796f 100644
> > --- a/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c
> > +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c
> > @@ -896,11 +896,11 @@ UpdateDefaultSettingInFormPackage (
> > break;
> > case EFI_IFR_CHECKBOX_OP:
> > IfrScope = IfrOpHdr->Scope;
> > IfrQuestionType = IfrOpHdr->OpCode;
> > IfrQuestionHdr = (EFI_IFR_QUESTION_HEADER *) (IfrOpHdr + 1);
> > - IfrCheckBox = (EFI_IFR_CHECKBOX *) (IfrOpHdr + 1);
> > + IfrCheckBox = (EFI_IFR_CHECKBOX *) IfrOpHdr;
> > EfiVarStoreIndex = IsEfiVarStoreQuestion (IfrQuestionHdr,
> EfiVarStoreList, EfiVarStoreNumber);
> > Width = sizeof (BOOLEAN);
> > if (EfiVarStoreIndex < EfiVarStoreNumber) {
> > for (Index = 0; Index < DefaultIdNumber; Index ++) {
> > if (DefaultIdList[Index] == EFI_HII_DEFAULT_CLASS_STANDARD)
> > {
> >
>
> what were the practical consequences (symptoms) of this issue? Did some
> checkboxes not work? (I'm asking because SecureBootConfigDxe uses some
> checkboxes.)
1. The bug is in function "UpdateDefaultSettingInFormPackage()" which is to update the default setting of some HII Questions in the IFR binary data. So it only has impact when platform overrides default setting in HII VarStore through DynamicHii PCD setting in Platform DSC file. If platform doesn't override default setting, it has no impact.
2. The implementation updates the "Flags" filed in the EFI_IFR_CHECKBOX structure to update the default setting of checkbox.
If using "IfrCheckBox = (EFI_IFR_CHECKBOX *) (IfrOpHdr + 1);" when wants to update the " Flags" filed in checkbox, but in fact it will update the opcode binary data(opcode binary length) behind checkbox binary.
And then it will cause Browser can't parse the IFR binary data correctly. And then the possible symptom is that some HII Question and forms may be not parsed and then cannot be shown.
Thanks,
Dandan
>
> Thanks,
> Laszlo
next prev parent reply other threads:[~2018-10-08 14:33 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-08 1:29 [patch] MdeModulePkg/HiiDB: Fix incorrect structure convention for checkbox Dandan Bi
2018-10-08 3:08 ` Gao, Liming
2018-10-08 12:18 ` Laszlo Ersek
2018-10-08 14:32 ` Bi, Dandan [this message]
2018-10-08 15:15 ` Laszlo Ersek
2018-10-09 2:06 ` Ni, Ruiyu
2018-10-09 2:13 ` Bi, Dandan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3C0D5C461C9E904E8F62152F6274C0BB3BBC2121@shsmsx102.ccr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox