From 9a17d04e40b3f45f348963b8e3154fd3b869697b Mon Sep 17 00:00:00 2001 From: Patrick Georgi Date: Wed, 20 Jan 2016 18:45:07 +0100 Subject: [PATCH] cbfstool: don't rewrite param.baseaddress in cbfs_add cbfs_add calculated a base address out of the alignment specification and stored it in param.baseaddress. This worked when every cbfstool invocation only added a single file, but with -r REGION1,REGION2,... multiple additions can happen. In that case, the second (and later) additions would have both alignment and baseaddress set, which isn't allowed, aborting the process. Change-Id: I8c5a512dbe3c97e08c5bcd92b5541b58f65c63b3 Signed-off-by: Patrick Georgi Reviewed-on: https://review.coreboot.org/13063 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer --- util/cbfstool/cbfstool.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/util/cbfstool/cbfstool.c b/util/cbfstool/cbfstool.c index 8ad66c457c..6d887d8eca 100644 --- a/util/cbfstool/cbfstool.c +++ b/util/cbfstool/cbfstool.c @@ -520,6 +520,7 @@ static int cbfs_add(void) { int32_t address; convert_buffer_t convert; + uint32_t local_baseaddress = param.baseaddress; if (param.alignment && param.baseaddress) { ERROR("Cannot specify both alignment and base address\n"); @@ -541,13 +542,13 @@ static int cbfs_add(void) size_t metadata_sz = sizeof(struct cbfs_file_attr_compression); if (do_cbfs_locate(&address, metadata_sz)) return 1; - param.baseaddress = address; + local_baseaddress = address; } return cbfs_add_component(param.filename, param.name, param.type, - param.baseaddress, + local_baseaddress, param.headeroffset, convert); }