image-fit: fit_check_format check for valid FDT
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Wed, 13 Jan 2021 01:09:12 +0000 (02:09 +0100)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Wed, 13 Jan 2021 01:38:00 +0000 (02:38 +0100)
fit_check_format() must check that the buffer contains a flattened device
tree before calling any device tree library functions.

Failure to do may cause segmentation faults.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
common/image-fit.c

index 6a8787ca0aa09c38689208b7dc74beabfc1c4c5b..21c44bdf691d8f3320fa501cc9248142828b34cc 100644 (file)
@@ -1553,6 +1553,12 @@ int fit_image_check_comp(const void *fit, int noffset, uint8_t comp)
  */
 int fit_check_format(const void *fit)
 {
+       /* A FIT image must be a valid FDT */
+       if (fdt_check_header(fit)) {
+               debug("Wrong FIT format: not a flattened device tree\n");
+               return 0;
+       }
+
        /* mandatory / node 'description' property */
        if (fdt_getprop(fit, 0, FIT_DESC_PROP, NULL) == NULL) {
                debug("Wrong FIT format: no description\n");