CHAR16 *FileName;\r
CHAR16 *Temp2;\r
CHAR16 *Data;\r
- UINT16 KeyIndex;\r
+ UINT32 KeyIndex;\r
CHAR16 VariableName[12];\r
+ UINT8 *VariableData;\r
\r
SHELL_FILE_HANDLE FileHandle;\r
\r
FileName = NULL;\r
Data = NULL;\r
KeyOptionBuffer = NULL;\r
+ VariableData = NULL;\r
\r
ZeroMem(&NewKeyOption, sizeof(EFI_KEY_OPTION));\r
+ ZeroMem(VariableName, sizeof(VariableName));\r
\r
while(Walker[0] == L' ') {\r
Walker++;\r
}\r
\r
if (ShellStatus == SHELL_SUCCESS) {\r
- for (Temp2 = NULL, KeyIndex = 0 ; KeyIndex < 0xFFFF ; KeyIndex++) {\r
+ for (Temp2 = NULL, KeyIndex = 0 ; KeyIndex <= 0xFFFF ; KeyIndex++) {\r
UnicodeSPrint(VariableName, sizeof(VariableName), L"Key%04x", KeyIndex);\r
- Status = gRT->GetVariable(\r
- VariableName,\r
- (EFI_GUID*)&gEfiGlobalVariableGuid,\r
- NULL,\r
- (UINTN*)&Intermediate,\r
- NULL);\r
+ Status = GetEfiGlobalVariable2 (VariableName, &VariableData, NULL);\r
if (Status == EFI_NOT_FOUND) {\r
break;\r
}\r
+ if (!EFI_ERROR(Status)) {\r
+ SHELL_FREE_NON_NULL(VariableData);\r
+ }\r
}\r
- Status = gRT->SetVariable(\r
- VariableName,\r
- (EFI_GUID*)&gEfiGlobalVariableGuid,\r
- EFI_VARIABLE_NON_VOLATILE|EFI_VARIABLE_BOOTSERVICE_ACCESS|EFI_VARIABLE_RUNTIME_ACCESS,\r
- sizeof(EFI_KEY_OPTION) + (sizeof(EFI_INPUT_KEY) * NewKeyOption.KeyData.Options.InputKeyCount),\r
- KeyOptionBuffer);\r
- if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, VariableName, Status);\r
+ if (KeyIndex <= 0xFFFF) {\r
+ Status = gRT->SetVariable(\r
+ VariableName,\r
+ (EFI_GUID*)&gEfiGlobalVariableGuid,\r
+ EFI_VARIABLE_NON_VOLATILE|EFI_VARIABLE_BOOTSERVICE_ACCESS|EFI_VARIABLE_RUNTIME_ACCESS,\r
+ sizeof(EFI_KEY_OPTION) + (sizeof(EFI_INPUT_KEY) * NewKeyOption.KeyData.Options.InputKeyCount),\r
+ KeyOptionBuffer);\r
+ if (EFI_ERROR(Status)) {\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, VariableName, Status);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } \r
+ } else {\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_VAR_NO_NUM), gShellBcfgHiiHandle);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
- } \r
+ }\r
ASSERT(FileName == NULL && Data == NULL);\r
}\r
}\r