summaryrefslogtreecommitdiff
path: root/flashrom.c
diff options
context:
space:
mode:
authorstefanct <stefanct@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2013-09-23 15:32:25 +0000
committerstefanct <stefanct@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2013-09-23 15:32:25 +0000
commit1694aaca589ae801eac0155d0552c328ccb51ded (patch)
tree7e1ce5783126c9ebe77be91b646022a872fb36d6 /flashrom.c
parent92126a64473c8d659c2bbaa3fafe9d7951c9d42f (diff)
downloadflashrom-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.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/flashrom.c b/flashrom.c
index 86e64a2..26339c7 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -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);
// ////////////////////////////////////////////////////////////