From: Petr Štetiar Date: Fri, 19 Jul 2019 13:52:46 +0000 (+0200) Subject: firmware-utils: mkfwimage: provide human readable error X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=9401780c2c87dc78116eabe30b4eae987b05a921;p=oweals%2Fopenwrt.git firmware-utils: mkfwimage: provide human readable error 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 --- 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;