summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--util/cbfstool/cbfs_image.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/util/cbfstool/cbfs_image.c b/util/cbfstool/cbfs_image.c
index 0fb780d4bd..525547ddcd 100644
--- a/util/cbfstool/cbfs_image.c
+++ b/util/cbfstool/cbfs_image.c
@@ -456,10 +456,11 @@ int cbfs_image_delete(struct cbfs_image *image)
static int cbfs_add_entry_at(struct cbfs_image *image,
struct cbfs_file *entry,
uint32_t size,
- const char *name,
- uint32_t type,
+ const char *name unused,
+ uint32_t type unused,
const void *data,
uint32_t content_offset,
+ const void *header_data,
uint32_t header_size)
{
struct cbfs_file *next = cbfs_find_next_entry(image, entry);
@@ -489,7 +490,7 @@ static int cbfs_add_entry_at(struct cbfs_image *image,
}
len = size + (content_offset - addr - header_size);
- cbfs_create_empty_entry(entry, type, len, name);
+ memcpy(entry, header_data, header_size);
if (len != size) {
DEBUG("|..|header|content|... <use offset to create entry>\n");
DEBUG("before: offset=0x%x, len=0x%x\n",
@@ -609,11 +610,16 @@ int cbfs_add_entry(struct cbfs_image *image, struct buffer *buffer,
DEBUG("section 0x%x+0x%x for content_offset 0x%x.\n",
addr, addr_next - addr, content_offset);
+ struct cbfs_file *header =
+ cbfs_create_file_header(type, buffer->size, name);
+
if (cbfs_add_entry_at(image, entry, buffer->size, name, type,
- buffer->data, content_offset,
+ buffer->data, content_offset, header,
header_size) == 0) {
+ free(header);
return 0;
}
+ free(header);
break;
}