mirror of https://github.com/acidanthera/audk.git
Check the Config access protocol before use it.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15251 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
929fb3be41
commit
70f1d5e756
|
@ -2294,8 +2294,8 @@ ProcessRetrieveForQuestion (
|
||||||
|
|
||||||
Status = EFI_SUCCESS;
|
Status = EFI_SUCCESS;
|
||||||
ActionRequest = EFI_BROWSER_ACTION_REQUEST_NONE;
|
ActionRequest = EFI_BROWSER_ACTION_REQUEST_NONE;
|
||||||
|
|
||||||
if ((Statement->QuestionFlags & EFI_IFR_FLAG_CALLBACK) != EFI_IFR_FLAG_CALLBACK) {
|
if (((Statement->QuestionFlags & EFI_IFR_FLAG_CALLBACK) != EFI_IFR_FLAG_CALLBACK) || ConfigAccess == NULL) {
|
||||||
return EFI_UNSUPPORTED;
|
return EFI_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2433,8 +2433,7 @@ SetupBrowser (
|
||||||
// for each question with callback flag.
|
// for each question with callback flag.
|
||||||
// New form may be the first form, or the different form after another form close.
|
// New form may be the first form, or the different form after another form close.
|
||||||
//
|
//
|
||||||
if ((ConfigAccess != NULL) &&
|
if (((Selection->Handle != mCurrentHiiHandle) ||
|
||||||
((Selection->Handle != mCurrentHiiHandle) ||
|
|
||||||
(!CompareGuid (&Selection->FormSetGuid, &mCurrentFormSetGuid)) ||
|
(!CompareGuid (&Selection->FormSetGuid, &mCurrentFormSetGuid)) ||
|
||||||
(Selection->FormId != mCurrentFormId))) {
|
(Selection->FormId != mCurrentFormId))) {
|
||||||
//
|
//
|
||||||
|
@ -2444,18 +2443,20 @@ SetupBrowser (
|
||||||
CopyGuid (&mCurrentFormSetGuid, &Selection->FormSetGuid);
|
CopyGuid (&mCurrentFormSetGuid, &Selection->FormSetGuid);
|
||||||
mCurrentFormId = Selection->FormId;
|
mCurrentFormId = Selection->FormId;
|
||||||
|
|
||||||
Status = ProcessCallBackFunction (Selection, gCurrentSelection->FormSet, Selection->Form, NULL, EFI_BROWSER_ACTION_FORM_OPEN, FALSE);
|
if (ConfigAccess != NULL) {
|
||||||
if (EFI_ERROR (Status)) {
|
Status = ProcessCallBackFunction (Selection, gCurrentSelection->FormSet, Selection->Form, NULL, EFI_BROWSER_ACTION_FORM_OPEN, FALSE);
|
||||||
goto Done;
|
if (EFI_ERROR (Status)) {
|
||||||
}
|
goto Done;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// IFR is updated during callback of open form, force to reparse the IFR binary
|
// IFR is updated during callback of open form, force to reparse the IFR binary
|
||||||
//
|
//
|
||||||
if (mHiiPackageListUpdated) {
|
if (mHiiPackageListUpdated) {
|
||||||
Selection->Action = UI_ACTION_REFRESH_FORMSET;
|
Selection->Action = UI_ACTION_REFRESH_FORMSET;
|
||||||
mHiiPackageListUpdated = FALSE;
|
mHiiPackageListUpdated = FALSE;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2132,6 +2132,10 @@ SendDiscardInfoToDriver (
|
||||||
EFI_IFR_TYPE_VALUE *TypeValue;
|
EFI_IFR_TYPE_VALUE *TypeValue;
|
||||||
EFI_BROWSER_ACTION_REQUEST ActionRequest;
|
EFI_BROWSER_ACTION_REQUEST ActionRequest;
|
||||||
|
|
||||||
|
if (FormSet->ConfigAccess == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Link = GetFirstNode (&Form->StatementListHead);
|
Link = GetFirstNode (&Form->StatementListHead);
|
||||||
while (!IsNull (&Form->StatementListHead, Link)) {
|
while (!IsNull (&Form->StatementListHead, Link)) {
|
||||||
Question = FORM_BROWSER_STATEMENT_FROM_LINK (Link);
|
Question = FORM_BROWSER_STATEMENT_FROM_LINK (Link);
|
||||||
|
|
Loading…
Reference in New Issue