Reviewed-by: Jaben Carsey <[email protected]>

> -----Original Message-----
> From: Qiu, Shumin
> Sent: Sunday, April 24, 2016 10:56 PM
> To: [email protected]
> Cc: Qiu, Shumin <[email protected]>; Carsey, Jaben
> <[email protected]>
> Subject: [PATCH] ShellPkg: Fix Shell treats every .EFI file as an executable
> application.
> Importance: High
> 
> UEFI Shell 2.x cannot recognize whether a .EFI file is an application or
> a driver. This means when we typed in a driver image in Shell command
> line, Shell will load the driver image and try to run the entry point
> function of the driver.
> This patch check the ImageCodeType to fix the issue.
> 
> Cc: Jaben Carsey <[email protected]>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Qiu Shumin <[email protected]>
> ---
>  ShellPkg/Application/Shell/Shell.uni       |  5 ++++-
>  ShellPkg/Application/Shell/ShellProtocol.c | 15 +++++++++++++++
>  2 files changed, 19 insertions(+), 1 deletion(-)
> 
> diff --git a/ShellPkg/Application/Shell/Shell.uni
> b/ShellPkg/Application/Shell/Shell.uni
> index 301d879..3947d01 100644
> --- a/ShellPkg/Application/Shell/Shell.uni
> +++ b/ShellPkg/Application/Shell/Shell.uni
> @@ -1,7 +1,7 @@
>  // *++
>  //
>  // (C) Copyright 2013-2015 Hewlett-Packard Development Company,
> L.P.<BR>
> -// Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved. <BR>
> +// Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved. <BR>
>  // This program and the accompanying materials
>  // are licensed and made available under the terms and conditions of the BSD
> License
>  // which accompanies this distribution. The full text of the license may be
> found at
> @@ -52,3 +52,6 @@
>  #string STR_VER_OUTPUT_MAIN_UEFI      #language en-US "UEFI v%d.%02d
> (%s, 0x%08x)\r\n"
> 
>  #string STR_SHELL_NO_IN_EX            #language en-US "No SimpleTextInputEx
> was found. CTRL-based features are not usable.\r\n"
> +
> +#string STR_SHELL_IMAGE_NOT_APP       #language en-US "The image is not
> an application.\r\n"
> +
> diff --git a/ShellPkg/Application/Shell/ShellProtocol.c
> b/ShellPkg/Application/Shell/ShellProtocol.c
> index 17c3002..dc65b7d 100644
> --- a/ShellPkg/Application/Shell/ShellProtocol.c
> +++ b/ShellPkg/Application/Shell/ShellProtocol.c
> @@ -1441,6 +1441,7 @@ InternalShellExecuteDevicePath(
>    }
> 
>    InitializeListHead(&OrigEnvs);
> +  ZeroMem(&ShellParamsProtocol,
> sizeof(EFI_SHELL_PARAMETERS_PROTOCOL));
> 
>    NewHandle = NULL;
> 
> @@ -1483,6 +1484,20 @@ InternalShellExecuteDevicePath(
>      EFI_OPEN_PROTOCOL_GET_PROTOCOL);
> 
>    if (!EFI_ERROR(Status)) {
> +    //
> +    // If the image is not an app abort it.
> +    //
> +    if (LoadedImage->ImageCodeType != EfiLoaderCode){
> +      ShellPrintHiiEx(
> +        -1,
> +        -1,
> +        NULL,
> +        STRING_TOKEN (STR_SHELL_IMAGE_NOT_APP),
> +        ShellInfoObject.HiiHandle
> +      );
> +      goto UnloadImage;
> +    }
> +
>      ASSERT(LoadedImage->LoadOptionsSize == 0);
>      if (NewCmdLine != NULL) {
>        LoadedImage->LoadOptionsSize  = (UINT32)StrSize(NewCmdLine);
> --
> 2.7.1.windows.2

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to