From 7a33b53dc0f55ed64c2b07796d2d4d302d78bac1 Mon Sep 17 00:00:00 2001 From: Patrick Georgi Date: Tue, 25 Aug 2015 13:00:04 +0200 Subject: cbfstool: Don't patch cbfs_file->len, it's already set correctly ->len used to be set to the file data length plus the size of the padding used for the cbfs_file header. This isn't the case anymore, so no patching of this field is necessary anymore. ->offset still needs to be patched in that case because its final value can only be determined when the file's actual location is known. Change-Id: I1037885f81b4ed3b68898dd7d0e515cf7a9c90a8 Signed-off-by: Patrick Georgi Reviewed-on: http://review.coreboot.org/11322 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin --- util/cbfstool/cbfs_image.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/util/cbfstool/cbfs_image.c b/util/cbfstool/cbfs_image.c index 866215854c..a08bb2f120 100644 --- a/util/cbfstool/cbfs_image.c +++ b/util/cbfstool/cbfs_image.c @@ -487,15 +487,18 @@ static int cbfs_add_entry_at(struct cbfs_image *image, addr = cbfs_get_entry_addr(image, entry); } - len = size + (content_offset - addr - header_size); + len = content_offset - addr - header_size; memcpy(entry, header_data, header_size); - if (len != size) { + if (len != 0) { + /* the header moved backwards a bit to accomodate cbfs_file + * alignment requirements, so patch up ->offset to still point + * to file data. + */ DEBUG("|..|header|content|... \n"); DEBUG("before: offset=0x%x, len=0x%x\n", ntohl(entry->offset), ntohl(entry->len)); // TODO reset expanded name buffer to 0xFF. - entry->offset = htonl(ntohl(entry->offset) + (len - size)); - entry->len = htonl(size); + entry->offset = htonl(ntohl(entry->offset) + len); DEBUG("after: offset=0x%x, len=0x%x\n", ntohl(entry->offset), ntohl(entry->len)); } -- cgit v1.2.3