mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
tools: kwboot: Do not modify kwbimage header before increasing its size
This ensures that kwboot_img_grow_hdr() function still sees valid kwbimage header. Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Marek Behún <marek.behun@nic.cz> Reviewed-by: Stefan Roese <sr@denx.de>
This commit is contained in:
parent
ed792c2938
commit
e511cc3b1a
1 changed files with 6 additions and 3 deletions
|
@ -1352,17 +1352,18 @@ kwboot_add_bin_ohdr_v1(void *img, size_t *size, uint32_t binsz)
|
|||
uint32_t num_args;
|
||||
uint32_t offset;
|
||||
uint32_t ohdrsz;
|
||||
uint8_t *prev_ext;
|
||||
|
||||
if (hdr->ext & 0x1) {
|
||||
for_each_opt_hdr_v1 (ohdr, img)
|
||||
if (opt_hdr_v1_next(ohdr) == NULL)
|
||||
break;
|
||||
|
||||
*opt_hdr_v1_ext(ohdr) |= 1;
|
||||
ohdr = opt_hdr_v1_next(ohdr);
|
||||
prev_ext = opt_hdr_v1_ext(ohdr);
|
||||
ohdr = _opt_hdr_v1_next(ohdr);
|
||||
} else {
|
||||
hdr->ext |= 1;
|
||||
ohdr = (void *)(hdr + 1);
|
||||
prev_ext = &hdr->ext;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1377,6 +1378,8 @@ kwboot_add_bin_ohdr_v1(void *img, size_t *size, uint32_t binsz)
|
|||
ohdrsz = sizeof(*ohdr) + 4 + 4 * num_args + binsz + 4;
|
||||
kwboot_img_grow_hdr(hdr, size, ohdrsz);
|
||||
|
||||
*prev_ext |= 1;
|
||||
|
||||
ohdr->headertype = OPT_HDR_V1_BINARY_TYPE;
|
||||
ohdr->headersz_msb = ohdrsz >> 16;
|
||||
ohdr->headersz_lsb = cpu_to_le16(ohdrsz & 0xffff);
|
||||
|
|
Loading…
Reference in a new issue