Open
Description
The -verify option was crashes bootgen on a ZynqMP boot.bin file as the code wasn't
reading the image headers. Please find the following patch which fixed the problem:
From c6091d880c65665d1752c295b0c6c0f852b9afa8 Mon Sep 17 00:00:00 2001
From: Andrew Worsley <[email protected]>
Date: Fri, 8 Mar 2024 12:39:31 +1100
Subject: [PATCH 1/2] Fix segfault in -verify option
Code wasn't reading in the boot.bin image file headers for the -verify option
So add in a call to ReadHeaderTableDetails() prior to ReadPartitions() which
assumes the iHT (Image Header Table) pointer has been initialised.
With out this it results in the following crash:
(gdb) run -arch zynqmp -verify BOOT-zub1cg-rsa-new.bin -log trace
Starting program: /home/amw/work/src/bootgen/bootgen -arch zynqmp -verify BOOT-zub1cg-rsa-new.bin -log trace
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
****** Bootgen v2023.2
**** Build date : Mar 6 2024-17:46:38
** Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
** Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.
[TRACE] : Command Line parsing started
[TRACE] : Command: -arch zynqmp -verify BOOT-zub1cg-rsa-new.bin -log trace
[INFO] : Command line parsing completed successfully
Program received signal SIGSEGV, Segmentation fault.
0x000055555564c452 in ZynqMpReadImage::VerifyAuthentication (this=0x55555572fa30,
verifyImageOption=true) at verifyimage-zynqmp.cpp:55
55 if (iHT->headerAuthCertificateWordOffset != 0)
(gdb) p iHT
$1 = (ZynqMpImageHeaderTableStructure *) 0x0
(gdb) bt
verifyImageOption=true) at verifyimage-zynqmp.cpp:55
at main.cpp:73
---
readimage-zynqmp.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/readimage-zynqmp.cpp b/readimage-zynqmp.cpp
index af6993d..17e5896 100755
--- a/readimage-zynqmp.cpp
+++ b/readimage-zynqmp.cpp
@@ -100,6 +100,7 @@ void ZynqMpReadImage::ReadBinaryFile(DumpOption::Type dump, std::string path)
{
LOG_ERROR("The option '-read/-dump' is not supported on mcs format file : %s", binFilename.c_str());
}
+ ReadHeaderTableDetails();
ReadPartitions();
}
/*******************************************************************************/
--
2.30.2
Metadata
Metadata
Assignees
Labels
No labels