UINTN NumberEfiSystemPartitions;\r
EFI_SHELL_PROTOCOL *ShellProtocol;\r
\r
- ShellProtocol = GetShellProtocol ();\r
NumberEfiSystemPartitions = 0;\r
\r
+ ShellProtocol = GetShellProtocol ();\r
+ if (ShellProtocol == NULL) {\r
+ Print (L"Get Shell Protocol Fail\n");;\r
+ return ;\r
+ }\r
+\r
Print (L"EFI System Partition list:\n");\r
\r
gBS->LocateHandleBuffer (\r
//\r
do {\r
PreFullPath = CurFullPath;\r
- CurFullPath = EfiBootManagerGetNextFullDevicePath (DevicePath, CurFullPath);\r
+ CurFullPath = EfiBootManagerGetNextLoadOptionDevicePath (DevicePath, CurFullPath);\r
\r
if (PreFullPath != NULL) {\r
FreePool (PreFullPath);\r
EFI_BOOT_MANAGER_LOAD_OPTION NewOption;\r
\r
MappedDevicePath = NULL;\r
+ BootOptionBuffer = NULL;\r
+\r
ShellProtocol = GetShellProtocol ();\r
+ if (ShellProtocol == NULL) {\r
+ Print (L"Get Shell Protocol Fail\n");;\r
+ return EFI_NOT_FOUND;\r
+ }\r
\r
//\r
// 1. If Fs is not assigned and there are capsule provisioned before,\r
(VOID **)&BootNextData,\r
NULL\r
);\r
- if (!EFI_ERROR (Status)) {\r
+ if (EFI_ERROR (Status) || BootNextData == NULL) {\r
+ Print (L"Get Boot Next Data Fail. Status = %r\n", Status);\r
+ return EFI_NOT_FOUND;\r
+ } else {\r
UnicodeSPrint (BootOptionName, sizeof (BootOptionName), L"Boot%04x", *BootNextData);\r
Status = EfiBootManagerVariableToLoadOption (BootOptionName, &BootNextOption);\r
if (!EFI_ERROR (Status)) {\r
// 2. Get EFI system partition form boot options.\r
//\r
BootOptionBuffer = EfiBootManagerGetLoadOptions (&BootOptionCount, LoadOptionTypeBoot);\r
- if (BootOptionCount == 0 && Map == NULL) {\r
+ if ( (BootOptionBuffer == NULL) ||\r
+ (BootOptionCount == 0 && Map == NULL)\r
+ ) {\r
return EFI_NOT_FOUND;\r
}\r
\r