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:
11
flashrom.c
11
flashrom.c
@ -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);
|
||||
|
||||
// ////////////////////////////////////////////////////////////
|
||||
|
||||
|
Reference in New Issue
Block a user