diff options
author | Hung-Te Lin <hungte@chromium.org> | 2013-01-28 23:42:25 +0800 |
---|---|---|
committer | Hung-Te Lin <hungte@chromium.org> | 2013-01-30 03:07:34 +0100 |
commit | 5a9f45c757b48235d86018bee2d20f9e35d7e1d7 (patch) | |
tree | 4b3ed570bc6544e0a80124d3892b6ca7a186e681 /util/cbfstool | |
parent | 3414234f5a21b23b5b6cc0d2827ccbb4d9a2ccc8 (diff) |
cbfstool: Prevent file name to be corrupted by basename().
Calling basename(3) may modify content. We should allocate another buffer to
prevent corrupting input buffer (full file path names).
Change-Id: Ib4827f887542596feef16e7829b00444220b9922
Signed-off-by: Hung-Te Lin <hungte@chromium.org>
Reviewed-on: http://review.coreboot.org/2203
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Diffstat (limited to 'util/cbfstool')
-rw-r--r-- | util/cbfstool/common.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/util/cbfstool/common.c b/util/cbfstool/common.c index 97bf168402..137aeb7bb8 100644 --- a/util/cbfstool/common.c +++ b/util/cbfstool/common.c @@ -273,11 +273,13 @@ uint64_t intfiletype(const char *name) void print_cbfs_directory(const char *filename) { + char *name = strdup(filename); printf ("%s: %d kB, bootblocksize %d, romsize %d, offset 0x%x\n" "alignment: %d bytes, architecture: %s\n\n", - basename((char *)filename), romsize / 1024, ntohl(master_header->bootblocksize), + basename(name), romsize / 1024, ntohl(master_header->bootblocksize), romsize, ntohl(master_header->offset), align, arch_to_string(arch)); + free(name); printf("%-30s %-10s %-12s Size\n", "Name", "Offset", "Type"); uint32_t current = phys_start; while (current < phys_end) { |