tools: mkimage: fix STM32 image format for big endian hosts
authorAntonio Borneo <antonio.borneo@st.com>
Tue, 28 Jan 2020 14:42:13 +0000 (15:42 +0100)
committerPatrick Delaunay <patrick.delaunay@st.com>
Thu, 13 Feb 2020 16:32:09 +0000 (17:32 +0100)
Two header fields are not properly converted to little endian
before assignment, resulting in incorrect header while executing
mkimage on big endian hosts.

Convert the value of the header fields image_checksum and
edcsa_algorithm to little endian before the assignment.

Signed-off-by: Antonio Borneo <antonio.borneo@st.com>
Reviewed-by: Patrick DELAUNAY <patrick.delaunay@st.com>
Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
tools/stm32image.c

index ff3ec5f3f2b914752114f91c7518db0865c1973c..18357c051822508a652ce7bb1191390f5b71f40e 100644 (file)
@@ -45,7 +45,7 @@ static void stm32image_default_header(struct stm32_header *ptr)
        ptr->magic_number = HEADER_MAGIC;
        ptr->header_version[VER_MAJOR_IDX] = HEADER_VERSION_V1;
        ptr->option_flags = HEADER_DEFAULT_OPTION;
-       ptr->ecdsa_algorithm = 1;
+       ptr->ecdsa_algorithm = cpu_to_le32(1);
        ptr->binary_type = HEADER_TYPE_UBOOT;
 }
 
@@ -131,7 +131,8 @@ static void stm32image_set_header(void *ptr, struct stat *sbuf, int ifd,
        stm32hdr->image_entry_point = cpu_to_le32(params->ep);
        stm32hdr->image_length = cpu_to_le32((uint32_t)sbuf->st_size -
                                             sizeof(struct stm32_header));
-       stm32hdr->image_checksum = stm32image_checksum(ptr, sbuf->st_size);
+       stm32hdr->image_checksum =
+               cpu_to_le32(stm32image_checksum(ptr, sbuf->st_size));
 }
 
 /*