Hi Laszlo,

> -----Original Message-----
> From: Laszlo Ersek [mailto:[email protected]]
> Sent: Monday, October 08, 2018 8:19 PM
> To: Bi, Dandan <[email protected]>; [email protected]
> Cc: Zeng, Star <[email protected]>; Gao, Liming <[email protected]>
> 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 <[email protected]>
> > Cc: Star Zeng <[email protected]>
> > Contributed-under: TianoCore Contribution Agreement 1.1
> > Signed-off-by: Dandan Bi <[email protected]>
> > ---
> >  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
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to