From 9401780c2c87dc78116eabe30b4eae987b05a921 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Petr=20=C5=A0tetiar?= <ynezz@true.cz>
Date: Fri, 19 Jul 2019 15:52:46 +0200
Subject: [PATCH] firmware-utils: mkfwimage: provide human readable error
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

While looking at the ath25 build breakage of 19.07 images today I've
encountered following error:

 mkfwimage -B XS5 -v [...] ath25-ubnt5-squashfs-sysupgrade.bin.new
 ERROR: Failed creating firmware layout description - error code: -2

Which is barely human readable and needs poking into the source code, so
this patch makes the error more verbose and usable by mere mortals.

Signed-off-by: Petr Å tetiar <ynezz@true.cz>
---
 tools/firmware-utils/src/mkfwimage.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/tools/firmware-utils/src/mkfwimage.c b/tools/firmware-utils/src/mkfwimage.c
index c919a2a131..6f993d121d 100644
--- a/tools/firmware-utils/src/mkfwimage.c
+++ b/tools/firmware-utils/src/mkfwimage.c
@@ -297,6 +297,7 @@ static u_int32_t filelength(const char* file)
 
 static int create_image_layout(const char* kernelfile, const char* rootfsfile, char* board_name, image_info_t* im)
 {
+	uint32_t rootfs_len = 0;
 	part_data_t* kernel = &im->parts[0];
 	part_data_t* rootfs = &im->parts[1];
 
@@ -311,8 +312,13 @@ static int create_image_layout(const char* kernelfile, const char* rootfsfile, c
 	kernel->partition_entryaddr = p->kern_entry;
 	strncpy(kernel->filename, kernelfile, sizeof(kernel->filename));
 
-	if (filelength(rootfsfile) + kernel->partition_length > p->firmware_max_length)
+	rootfs_len = filelength(rootfsfile);
+	if (rootfs_len + kernel->partition_length > p->firmware_max_length) {
+		ERROR("File '%s' too big (0x%08X) - max size: 0x%08X (exceeds %u bytes)\n",
+		       rootfsfile, rootfs_len, p->firmware_max_length,
+		       (rootfs_len + kernel->partition_length) - p->firmware_max_length);
 		return (-2);
+	}
 
 	strcpy(rootfs->partition_name, "rootfs");
 	rootfs->partition_index = 2;
-- 
2.30.2