mirror of https://github.com/acidanthera/audk.git
K8:
1) Replace immediate constant with MACRO. 2) Add in ASSERT for NULL before dereferencing pointers and after memory allocation. 3) Add a return statement in ProcessOptions to handle the mismatch between the value stored and the opcode for one-of-option in orderedlist opcode. This case occurs when the one-of-optoin entry in OrderedList get deleted. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7320 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
7bfc66a284
commit
40a06b0ca8
|
@ -235,9 +235,9 @@ GetNumericInput (
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
UINTN Column;
|
UINTN Column;
|
||||||
UINTN Row;
|
UINTN Row;
|
||||||
CHAR16 InputText[23];
|
CHAR16 InputText[MAX_NUMERIC_INPUT_WIDTH];
|
||||||
CHAR16 FormattedNumber[22];
|
CHAR16 FormattedNumber[MAX_NUMERIC_INPUT_WIDTH - 1];
|
||||||
UINT64 PreviousNumber[20];
|
UINT64 PreviousNumber[MAX_NUMERIC_INPUT_WIDTH - 3];
|
||||||
UINTN Count;
|
UINTN Count;
|
||||||
UINTN Loop;
|
UINTN Loop;
|
||||||
BOOLEAN ManualInput;
|
BOOLEAN ManualInput;
|
||||||
|
@ -387,6 +387,7 @@ GetNumericInput (
|
||||||
|
|
||||||
InputText[0] = LEFT_NUMERIC_DELIMITER;
|
InputText[0] = LEFT_NUMERIC_DELIMITER;
|
||||||
SetUnicodeMem (InputText + 1, InputWidth, L' ');
|
SetUnicodeMem (InputText + 1, InputWidth, L' ');
|
||||||
|
ASSERT (InputWidth < MAX_NUMERIC_INPUT_WIDTH);
|
||||||
InputText[InputWidth + 1] = RIGHT_NUMERIC_DELIMITER;
|
InputText[InputWidth + 1] = RIGHT_NUMERIC_DELIMITER;
|
||||||
InputText[InputWidth + 2] = L'\0';
|
InputText[InputWidth + 2] = L'\0';
|
||||||
|
|
||||||
|
@ -640,6 +641,7 @@ EnterCarriageReturn:
|
||||||
|
|
||||||
if (EditValue > Maximum) {
|
if (EditValue > Maximum) {
|
||||||
UpdateStatusBar (INPUT_ERROR, Question->QuestionFlags, TRUE);
|
UpdateStatusBar (INPUT_ERROR, Question->QuestionFlags, TRUE);
|
||||||
|
ASSERT (Count < sizeof (PreviousNumber) / sizeof (PreviousNumber[0]));
|
||||||
EditValue = PreviousNumber[Count];
|
EditValue = PreviousNumber[Count];
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
|
@ -970,6 +972,7 @@ TheKey:
|
||||||
if (HighlightOptionIndex > 0) {
|
if (HighlightOptionIndex > 0) {
|
||||||
HighlightOptionIndex--;
|
HighlightOptionIndex--;
|
||||||
|
|
||||||
|
ASSERT (CurrentOption != NULL);
|
||||||
SwapListEntries (CurrentOption->Link.BackLink, &CurrentOption->Link);
|
SwapListEntries (CurrentOption->Link.BackLink, &CurrentOption->Link);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -997,6 +1000,7 @@ TheKey:
|
||||||
if (HighlightOptionIndex < (PopUpMenuLines - 1)) {
|
if (HighlightOptionIndex < (PopUpMenuLines - 1)) {
|
||||||
HighlightOptionIndex++;
|
HighlightOptionIndex++;
|
||||||
|
|
||||||
|
ASSERT (CurrentOption != NULL);
|
||||||
SwapListEntries (&CurrentOption->Link, CurrentOption->Link.ForwardLink);
|
SwapListEntries (&CurrentOption->Link, CurrentOption->Link.ForwardLink);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1096,6 +1100,7 @@ TheKey:
|
||||||
Link = GetNextNode (&Question->OptionListHead, Link);
|
Link = GetNextNode (&Question->OptionListHead, Link);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
ASSERT (CurrentOption != NULL);
|
||||||
CopyMem (&Question->HiiValue, &CurrentOption->Value, sizeof (EFI_HII_VALUE));
|
CopyMem (&Question->HiiValue, &CurrentOption->Value, sizeof (EFI_HII_VALUE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -188,6 +188,8 @@ DisplayPageFrame (
|
||||||
CHAR16 *StrFrontPageBanner;
|
CHAR16 *StrFrontPageBanner;
|
||||||
UINTN Row;
|
UINTN Row;
|
||||||
EFI_SCREEN_DESCRIPTOR LocalScreen;
|
EFI_SCREEN_DESCRIPTOR LocalScreen;
|
||||||
|
UINTN RowIdx;
|
||||||
|
UINTN ColumnIdx;
|
||||||
|
|
||||||
ZeroMem (&LocalScreen, sizeof (EFI_SCREEN_DESCRIPTOR));
|
ZeroMem (&LocalScreen, sizeof (EFI_SCREEN_DESCRIPTOR));
|
||||||
gST->ConOut->QueryMode (gST->ConOut, gST->ConOut->Mode->Mode, &LocalScreen.RightColumn, &LocalScreen.BottomRow);
|
gST->ConOut->QueryMode (gST->ConOut, gST->ConOut->Mode->Mode, &LocalScreen.RightColumn, &LocalScreen.BottomRow);
|
||||||
|
@ -229,9 +231,15 @@ DisplayPageFrame (
|
||||||
Alignment < BANNER_COLUMNS + (UINT8) LocalScreen.LeftColumn;
|
Alignment < BANNER_COLUMNS + (UINT8) LocalScreen.LeftColumn;
|
||||||
Alignment++
|
Alignment++
|
||||||
) {
|
) {
|
||||||
if (BannerData->Banner[Line - (UINT8) LocalScreen.TopRow][Alignment - (UINT8) LocalScreen.LeftColumn] != 0x0000) {
|
RowIdx = Line - (UINT8) LocalScreen.TopRow;
|
||||||
|
ColumnIdx = Alignment - (UINT8) LocalScreen.LeftColumn;
|
||||||
|
|
||||||
|
ASSERT (RowIdx < BANNER_HEIGHT);
|
||||||
|
ASSERT (ColumnIdx < BANNER_COLUMNS);
|
||||||
|
|
||||||
|
if (BannerData->Banner[RowIdx][ColumnIdx] != 0x0000) {
|
||||||
StrFrontPageBanner = GetToken (
|
StrFrontPageBanner = GetToken (
|
||||||
BannerData->Banner[Line - (UINT8) LocalScreen.TopRow][Alignment - (UINT8) LocalScreen.LeftColumn],
|
BannerData->Banner[RowIdx][ColumnIdx],
|
||||||
FrontPageHandle
|
FrontPageHandle
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -452,6 +452,7 @@ ProcessOptions (
|
||||||
|
|
||||||
FreePool (*OptionString);
|
FreePool (*OptionString);
|
||||||
*OptionString = NULL;
|
*OptionString = NULL;
|
||||||
|
return EFI_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((OneOfOption->SuppressExpression != NULL) &&
|
if ((OneOfOption->SuppressExpression != NULL) &&
|
||||||
|
@ -722,6 +723,8 @@ ProcessOptions (
|
||||||
}
|
}
|
||||||
|
|
||||||
TempString = AllocateCopyPool ((Maximum + 1) * sizeof (CHAR16), Question->BufferValue);
|
TempString = AllocateCopyPool ((Maximum + 1) * sizeof (CHAR16), Question->BufferValue);
|
||||||
|
ASSERT (TempString != NULL);
|
||||||
|
|
||||||
TempString[Maximum] = L'\0';
|
TempString[Maximum] = L'\0';
|
||||||
|
|
||||||
if (StrCmp (StringPtr, TempString) != 0) {
|
if (StrCmp (StringPtr, TempString) != 0) {
|
||||||
|
@ -877,6 +880,7 @@ ProcessHelpString (
|
||||||
//
|
//
|
||||||
AllocateSize = 0x20;
|
AllocateSize = 0x20;
|
||||||
IndexArray = AllocatePool (AllocateSize * sizeof (UINTN) * 3);
|
IndexArray = AllocatePool (AllocateSize * sizeof (UINTN) * 3);
|
||||||
|
ASSERT (IndexArray != NULL);
|
||||||
|
|
||||||
if (*FormattedString != NULL) {
|
if (*FormattedString != NULL) {
|
||||||
FreePool (*FormattedString);
|
FreePool (*FormattedString);
|
||||||
|
@ -1012,6 +1016,7 @@ ProcessHelpString (
|
||||||
|
|
||||||
VirtualLineCount = RowCount * (LineCount / RowCount + (LineCount % RowCount > 0));
|
VirtualLineCount = RowCount * (LineCount / RowCount + (LineCount % RowCount > 0));
|
||||||
*FormattedString = AllocateZeroPool (VirtualLineCount * (BlockWidth + 1) * sizeof (CHAR16) * 2);
|
*FormattedString = AllocateZeroPool (VirtualLineCount * (BlockWidth + 1) * sizeof (CHAR16) * 2);
|
||||||
|
ASSERT (*FormattedString != NULL);
|
||||||
|
|
||||||
for (CurrIndex = 0; CurrIndex < LineCount; CurrIndex ++) {
|
for (CurrIndex = 0; CurrIndex < LineCount; CurrIndex ++) {
|
||||||
*(*FormattedString + CurrIndex * 2 * (BlockWidth + 1)) = (CHAR16) ((IndexArray[CurrIndex*3+2] == 2) ? WIDE_CHAR : NARROW_CHAR);
|
*(*FormattedString + CurrIndex * 2 * (BlockWidth + 1)) = (CHAR16) ((IndexArray[CurrIndex*3+2] == 2) ? WIDE_CHAR : NARROW_CHAR);
|
||||||
|
|
|
@ -26,6 +26,13 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
#define SUBTITLE_INDENT 2
|
#define SUBTITLE_INDENT 2
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// It take 23 characters including the NULL to print a 64 bits number with "[" and "]".
|
||||||
|
// pow(2, 64) = [18446744073709551616]
|
||||||
|
//
|
||||||
|
#define MAX_NUMERIC_INPUT_WIDTH 23
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
UiNoOperation,
|
UiNoOperation,
|
||||||
UiDefault,
|
UiDefault,
|
||||||
|
|
Loading…
Reference in New Issue