diff options
author | stefanct <stefanct@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1> | 2013-09-23 15:32:25 +0000 |
---|---|---|
committer | stefanct <stefanct@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1> | 2013-09-23 15:32:25 +0000 |
commit | 1694aaca589ae801eac0155d0552c328ccb51ded (patch) | |
tree | 7e1ce5783126c9ebe77be91b646022a872fb36d6 /flashrom.c | |
parent | 92126a64473c8d659c2bbaa3fafe9d7951c9d42f (diff) | |
download | flashrom-0.9.7.tar.gz |
layout: Verify layout entries before building a new image using them.0.9.7
This fixes a SEGFAULT if a layout entry is included that addresses memory
outside the current chip's address range. flashrom will only abort if the
offending region(s) is/are included else it will just warn.
It will print warnings for regions with negative or zero-length address
ranges too, but it will only abort if they are included with -i/--image to reduce
the potential of regressions. This is different to the patch committed to
the development branch in r1751.
Also, abort for non-write operations if a layout file is given because
there is no layout support for non-write operations yet, and some reports
show that users expect it to work at least for -r/--read.
Signed-off-by: Stefan Tauner <stefan.tauner@student.tuwien.ac.at>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
git-svn-id: https://code.coreboot.org/svn/flashrom/branches/0.9.7@1752 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'flashrom.c')
-rw-r--r-- | flashrom.c | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -1904,6 +1904,12 @@ int doit(struct flashctx *flash, int force, const char *filename, int read_it, goto out_nofree; } + if (normalize_romentries(flash)) { + msg_cerr("Requested regions can not be handled. Aborting.\n"); + ret = 1; + goto out_nofree; + } + /* Given the existence of read locks, we want to unlock for read, * erase and write. */ @@ -1983,9 +1989,8 @@ int doit(struct flashctx *flash, int force, const char *filename, int read_it, } msg_cinfo("done.\n"); - // This should be moved into each flash part's code to do it - // cleanly. This does the job. - handle_romentries(flash, oldcontents, newcontents); + /* Build a new image taking the given layout into account. */ + build_new_image(flash, oldcontents, newcontents); // //////////////////////////////////////////////////////////// |