summaryrefslogtreecommitdiff
path: root/util/cbfstool/cbfstool.c
diff options
context:
space:
mode:
authorPatrick Georgi <pgeorgi@chromium.org>2016-01-20 18:45:07 +0100
committerPatrick Georgi <pgeorgi@google.com>2016-01-21 18:47:58 +0100
commit9a17d04e40b3f45f348963b8e3154fd3b869697b (patch)
treeeb0a509d7725b72d1b2b461b667881a69008156c /util/cbfstool/cbfstool.c
parenta5a628e86b5484200977d2d4f4a62a0d972aaf4a (diff)
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 <pgeorgi@chromium.org> Reviewed-on: https://review.coreboot.org/13063 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'util/cbfstool/cbfstool.c')
-rw-r--r--util/cbfstool/cbfstool.c5
1 files 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);
}