diff --git a/Changelog.md b/Changelog.md index 9a57c150a5e6716e58b856a7e14a87d19215f42a..fa2b17b3e93dfcd67d39cf404b0c9c133317d286 100644 --- a/Changelog.md +++ b/Changelog.md @@ -55,6 +55,7 @@ OpenCore Changelog - Improved OpenCanopy pointer acceleration - Added more precise control on `AppleEvent` protocol properties and features - Added dynamic keyboard protocol installation on CrScreenshotDxe +- Support starting UEFI tools with argument support (e.g. `ControlMsrE2`) without arguments from picker #### v0.6.7 - Fixed ocvalidate return code to be non-zero when issues are found diff --git a/Library/OcMiscLib/ProtocolSupport.c b/Library/OcMiscLib/ProtocolSupport.c index 8474c2553aa179dc1f66de97fdd38ca55000ed99..2b0bdb3cb6e7ae87d9a17f46cee227b26eb63a8e 100644 --- a/Library/OcMiscLib/ProtocolSupport.c +++ b/Library/OcMiscLib/ProtocolSupport.c @@ -27,6 +27,8 @@ GetArguments ( OUT CHAR16 ***Argv ) { + STATIC CHAR16 *StArgv[2] = { L"Self", NULL }; + EFI_STATUS Status; EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters; EFI_LOADED_IMAGE_PROTOCOL *LoadedImage; @@ -47,11 +49,17 @@ GetArguments ( &gEfiLoadedImageProtocolGuid, (VOID **) &LoadedImage ); + + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_WARN, "OCM: LoadedImage cannot be located - %r\n", Status)); + } + if (EFI_ERROR (Status) || LoadedImage->LoadOptions == NULL) { - return EFI_NOT_FOUND; + *Argc = 1; + *Argv = StArgv; + return EFI_SUCCESS; } - STATIC CHAR16 *StArgv[2] = { L"Self", NULL }; StArgv[1] = LoadedImage->LoadOptions; *Argc = ARRAY_SIZE (StArgv); *Argv = StArgv;