summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Dong <eric.dong@intel.com>2014-02-21 06:27:05 +0000
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>2014-02-21 06:27:05 +0000
commit70f1d5e75655dc71142d363df809c25d07c3e99d (patch)
tree1f015524ac765836ab58ee24078c5d1c23228659
parent929fb3be4169eb520272056c00b11bb3fb3f6458 (diff)
downloadedk2-platforms-70f1d5e75655dc71142d363df809c25d07c3e99d.tar.xz
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
-rw-r--r--MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c31
-rw-r--r--MdeModulePkg/Universal/SetupBrowserDxe/Setup.c4
2 files changed, 20 insertions, 15 deletions
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c b/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
index 488087e011..b3a3d23761 100644
--- a/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
+++ b/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
@@ -2294,8 +2294,8 @@ ProcessRetrieveForQuestion (
Status = EFI_SUCCESS;
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;
}
@@ -2433,8 +2433,7 @@ SetupBrowser (
// for each question with callback flag.
// New form may be the first form, or the different form after another form close.
//
- if ((ConfigAccess != NULL) &&
- ((Selection->Handle != mCurrentHiiHandle) ||
+ if (((Selection->Handle != mCurrentHiiHandle) ||
(!CompareGuid (&Selection->FormSetGuid, &mCurrentFormSetGuid)) ||
(Selection->FormId != mCurrentFormId))) {
//
@@ -2444,18 +2443,20 @@ SetupBrowser (
CopyGuid (&mCurrentFormSetGuid, &Selection->FormSetGuid);
mCurrentFormId = Selection->FormId;
- Status = ProcessCallBackFunction (Selection, gCurrentSelection->FormSet, Selection->Form, NULL, EFI_BROWSER_ACTION_FORM_OPEN, FALSE);
- if (EFI_ERROR (Status)) {
- goto Done;
- }
+ if (ConfigAccess != NULL) {
+ Status = ProcessCallBackFunction (Selection, gCurrentSelection->FormSet, Selection->Form, NULL, EFI_BROWSER_ACTION_FORM_OPEN, FALSE);
+ if (EFI_ERROR (Status)) {
+ goto Done;
+ }
- //
- // IFR is updated during callback of open form, force to reparse the IFR binary
- //
- if (mHiiPackageListUpdated) {
- Selection->Action = UI_ACTION_REFRESH_FORMSET;
- mHiiPackageListUpdated = FALSE;
- break;
+ //
+ // IFR is updated during callback of open form, force to reparse the IFR binary
+ //
+ if (mHiiPackageListUpdated) {
+ Selection->Action = UI_ACTION_REFRESH_FORMSET;
+ mHiiPackageListUpdated = FALSE;
+ break;
+ }
}
}
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
index 5ce0b84ed6..f86f369ff2 100644
--- a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
+++ b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
@@ -2132,6 +2132,10 @@ SendDiscardInfoToDriver (
EFI_IFR_TYPE_VALUE *TypeValue;
EFI_BROWSER_ACTION_REQUEST ActionRequest;
+ if (FormSet->ConfigAccess == NULL) {
+ return;
+ }
+
Link = GetFirstNode (&Form->StatementListHead);
while (!IsNull (&Form->StatementListHead, Link)) {
Question = FORM_BROWSER_STATEMENT_FROM_LINK (Link);