summaryrefslogtreecommitdiffstats
path: root/ShellPkg
diff options
context:
space:
mode:
authorZhichao Gao <zhichao.gao@intel.com>2019-11-29 16:51:45 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2019-12-19 05:11:00 +0000
commit95bb203861c5e19b7b7d5d9318e16d82108f2134 (patch)
tree294b050a5539002f1b201d972fa58b1abdf2f850 /ShellPkg
parentc7a0aca0ed0e9b51efe0c437ff77b30cf1457f8a (diff)
downloadedk2-95bb203861c5e19b7b7d5d9318e16d82108f2134.tar.gz
edk2-95bb203861c5e19b7b7d5d9318e16d82108f2134.tar.bz2
edk2-95bb203861c5e19b7b7d5d9318e16d82108f2134.zip
ShellPkg/ShellProtocol: Return error code while fail parsing cmd-line
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2395 Errors happened in the arguments parsing is not a critical error. And it would miss the error status code in the release version of shell. So replace the ASSERT with returning error status code while fail parsing command-line in UpdateArgcArgv. Cc: Ray Ni <ray.ni@intel.com> Cc: Linson Augustine <linson.augustine@intel.com> Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com> Reviewed-by: Ray Ni <ray.ni@intel.com> Signed-off-by: Zhichao Gao <zhichao.gao@intel.com>
Diffstat (limited to 'ShellPkg')
-rw-r--r--ShellPkg/Application/Shell/ShellProtocol.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/ShellPkg/Application/Shell/ShellProtocol.c b/ShellPkg/Application/Shell/ShellProtocol.c
index 5e529b6568..f0362a42d8 100644
--- a/ShellPkg/Application/Shell/ShellProtocol.c
+++ b/ShellPkg/Application/Shell/ShellProtocol.c
@@ -1497,7 +1497,10 @@ InternalShellExecuteDevicePath(
ShellParamsProtocol.StdOut = ShellInfoObject.NewShellParametersProtocol->StdOut;
ShellParamsProtocol.StdErr = ShellInfoObject.NewShellParametersProtocol->StdErr;
Status = UpdateArgcArgv(&ShellParamsProtocol, NewCmdLine, Efi_Application, NULL, NULL);
- ASSERT_EFI_ERROR(Status);
+ if (EFI_ERROR (Status)) {
+ goto UnloadImage;
+ }
+
//
// Replace Argv[0] with the full path of the binary we're executing:
// If the command line was "foo", the binary might be called "foo.efi".