Переглянути джерело

Platform/ARM: Fix uninitialized variable in RunAxf

RunAxf is a shell command used for running an Axf file. The
ShellDynCmdRunAxfHandler() loads an ELF file or one processed by the
Flashloader. It calls the appropriate loaders to load the file in
memory and to obtain the entry point address.

The first argument to RunAxfPivot() is the entry point address for the image
to execute. The patch
https://github.com/tianocore/edk2-platforms/commit/996047695a06167a918b07b22fcd0fbd0def5da6
changes set/way cache maintenance operations to by-VA operation. This patch
however introduced an error: 'variable StartElf is not initialized'.

Since, StartElf is the first argument to RunAxfPivot(), which is expected to
be the entry point address; RunAxfPivot() would end up branching to an
invalid address resulting in a crash.

Therefore, initialize StartElf to the entry point address before calling
RunAxfPivot().

Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
Sami Mujawar 4 роки тому
батько
коміт
1d59c5b912
1 змінених файлів з 2 додано та 1 видалено
  1. 2 1
      Platform/ARM/Library/ArmShellCmdRunAxf/RunAxf.c

+ 2 - 1
Platform/ARM/Library/ArmShellCmdRunAxf/RunAxf.c

@@ -2,7 +2,7 @@
 *
 *  Shell command for launching AXF files.
 *
-*  Copyright (c) 2014, ARM Limited. All rights reserved.
+*  Copyright (c) 2014 - 2020, ARM Limited. All rights reserved.
 *
 *  SPDX-License-Identifier: BSD-2-Clause-Patent
 *
@@ -315,6 +315,7 @@ ShellDynCmdRunAxfHandler (
       //
       WriteBackDataCacheRange (LoadedImage->ImageBase, LoadedImage->ImageSize);
 
+      StartElf = (ELF_ENTRYPOINT)Entrypoint;
       RunAxfPivot (StartElf, 0, 0, 0, 0);
 
       // We should never get here.. But if we do, spin..