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:
Eric Dong 2014-02-21 06:27:05 +00:00 committed by ydong10
parent 929fb3be41
commit 70f1d5e756
2 changed files with 20 additions and 15 deletions

View File

@ -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;
}
} }
} }

View File

@ -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);