summaryrefslogtreecommitdiff
path: root/tools/fit_image.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/fit_image.c')
-rw-r--r--tools/fit_image.c40
1 files changed, 33 insertions, 7 deletions
diff --git a/tools/fit_image.c b/tools/fit_image.c
index 10849733816..0306333141e 100644
--- a/tools/fit_image.c
+++ b/tools/fit_image.c
@@ -658,13 +658,25 @@ static int fit_extract_data(struct image_tool_params *params, const char *fname)
}
if (params->external_offset > 0) {
/* An external offset positions the data absolutely. */
- fdt_setprop_u32(fdt, node, FIT_DATA_POSITION_PROP,
- params->external_offset + buf_ptr);
+ ret = fdt_setprop_u32(fdt, node, FIT_DATA_POSITION_PROP,
+ params->external_offset + buf_ptr);
} else {
- fdt_setprop_u32(fdt, node, FIT_DATA_OFFSET_PROP,
- buf_ptr);
+ ret = fdt_setprop_u32(fdt, node, FIT_DATA_OFFSET_PROP,
+ buf_ptr);
}
- fdt_setprop_u32(fdt, node, FIT_DATA_SIZE_PROP, len);
+
+ if (ret) {
+ ret = -EINVAL;
+ goto err_munmap;
+ }
+
+ ret = fdt_setprop_u32(fdt, node, FIT_DATA_SIZE_PROP, len);
+
+ if (ret) {
+ ret = -EINVAL;
+ goto err_munmap;
+ }
+
buf_ptr += ALIGN(len, align_size);
}
@@ -793,14 +805,28 @@ static int fit_import_data(struct image_tool_params *params, const char *fname)
debug("Importing data size %x\n", len);
ret = fdt_setprop(fdt, node, FIT_DATA_PROP, data, len);
- ret = fdt_delprop(fdt, node, ext_data_prop);
-
if (ret) {
debug("%s: Failed to write property: %s\n", __func__,
fdt_strerror(ret));
ret = -EINVAL;
goto err_munmap;
}
+
+ ret = fdt_delprop(fdt, node, ext_data_prop);
+ if (ret) {
+ debug("%s: Failed to erase property: %s\n", __func__,
+ fdt_strerror(ret));
+ ret = -EINVAL;
+ goto err_munmap;
+ }
+
+ ret = fdt_delprop(fdt, node, FIT_DATA_SIZE_PROP);
+ if (ret) {
+ debug("%s: Failed to erase %s property: %s\n", __func__,
+ FIT_DATA_SIZE_PROP, fdt_strerror(ret));
+ ret = -EINVAL;
+ goto err_munmap;
+ }
}
confs = fdt_path_offset(fdt, FIT_CONFS_PATH);