1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-07-02 14:33:18 +02:00

layout: Verify layout entries before building a new image using them

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
and bail out after checking all of them.

Also, abort for non-write operations if a layout file is given because there is
no layout support for other operations yet.

Corresponding to flashrom svn r1751.

Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
This commit is contained in:
Stefan Tauner
2013-09-23 14:21:06 +00:00
parent a6a0d2000a
commit 8268fdb902
4 changed files with 52 additions and 8 deletions

View File

@ -1916,6 +1916,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.
*/
@ -1995,9 +2001,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);
// ////////////////////////////////////////////////////////////