MdeModulePkg: Enhance the check for numeric opcode with EFI_IFR_DISPLAY_INT_DEC attribute.

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@17345 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Eric Dong
2015-05-06 12:30:13 +00:00
committed by ydong10
parent 1afac950f9
commit afc9bf796c
3 changed files with 282 additions and 75 deletions

View File

@@ -3944,9 +3944,43 @@ GetQuestionDefault (
//
// Take minimum value as numeric default value
//
if ((HiiValue->Value.u64 < Question->Minimum) || (HiiValue->Value.u64 > Question->Maximum)) {
HiiValue->Value.u64 = Question->Minimum;
Status = EFI_SUCCESS;
if ((Question->Flags & EFI_IFR_DISPLAY) == 0) {
//
// In EFI_IFR_DISPLAY_INT_DEC type, should check value with int* type.
//
switch (Question->Flags & EFI_IFR_NUMERIC_SIZE) {
case EFI_IFR_NUMERIC_SIZE_1:
if (((INT8) HiiValue->Value.u8 < (INT8) Question->Minimum) || ((INT8) HiiValue->Value.u8 > (INT8) Question->Maximum)) {
HiiValue->Value.u8 = (UINT8) Question->Minimum;
Status = EFI_SUCCESS;
}
break;
case EFI_IFR_NUMERIC_SIZE_2:
if (((INT16) HiiValue->Value.u16 < (INT16) Question->Minimum) || ((INT16) HiiValue->Value.u16 > (INT16) Question->Maximum)) {
HiiValue->Value.u16 = (UINT16) Question->Minimum;
Status = EFI_SUCCESS;
}
break;
case EFI_IFR_NUMERIC_SIZE_4:
if (((INT32) HiiValue->Value.u32 < (INT32) Question->Minimum) || ((INT32) HiiValue->Value.u32 > (INT32) Question->Maximum)) {
HiiValue->Value.u32 = (UINT32) Question->Minimum;
Status = EFI_SUCCESS;
}
break;
case EFI_IFR_NUMERIC_SIZE_8:
if (((INT64) HiiValue->Value.u64 < (INT64) Question->Minimum) || ((INT64) HiiValue->Value.u64 > (INT64) Question->Maximum)) {
HiiValue->Value.u64 = Question->Minimum;
Status = EFI_SUCCESS;
}
break;
default:
break;
}
} else {
if ((HiiValue->Value.u64 < Question->Minimum) || (HiiValue->Value.u64 > Question->Maximum)) {
HiiValue->Value.u64 = Question->Minimum;
Status = EFI_SUCCESS;
}
}
break;