diff options
author | Edward O'Callaghan <quasisec@google.com> | 2021-12-29 10:57:12 +1100 |
---|---|---|
committer | Edward O'Callaghan <quasisec@chromium.org> | 2022-01-22 00:05:24 +0000 |
commit | 35547ed3afeac1d9840f11ef2bcc75624a355a11 (patch) | |
tree | af441bf0aceed8df288d58dc7c2c61ec1df4abc7 | |
parent | 7a2d7efd83ff50507192bba01dbad1a411e22b25 (diff) | |
download | flashrom-35547ed3afeac1d9840f11ef2bcc75624a355a11.tar.gz flashrom-35547ed3afeac1d9840f11ef2bcc75624a355a11.tar.bz2 flashrom-35547ed3afeac1d9840f11ef2bcc75624a355a11.zip |
flashrom: Convert do_read() into a libflashrom user
Aspire towards a goal of making cli_classic more of just
a user of libflashrom than having quasi-parallel paths in
flashrom.c
This converts the do_read() provider wrapper into a pure
libflashrom user.
BUG=b:208132085
TEST=`$ sudo ./flashrom -p internal -r /tmp/bios.bin`
TEST=`$ sudo ./flashrom -p internal -l /tmp/layout -i FOO -r /tmp/foo.bin`
Change-Id: Id2addadb891c482ee3f69da806062d7a88776675
Signed-off-by: Edward O'Callaghan <quasisec@google.com>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/60430
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
-rw-r--r-- | flashrom.c | 21 |
1 files changed, 18 insertions, 3 deletions
@@ -2192,13 +2192,28 @@ _free_ret: int do_read(struct flashctx *const flash, const char *const filename) { - if (prepare_flash_access(flash, true, false, false, false)) + int ret; + + unsigned long size = flash->chip->total_size * 1024; + unsigned char *buf = calloc(size, sizeof(unsigned char)); + if (!buf) { + msg_gerr("Memory allocation failed!\n"); return 1; + } - const int ret = read_flash_to_file(flash, filename); + ret = flashrom_image_read(flash, buf, size); + if (ret > 0) + goto free_out; - finalize_flash_access(flash); + if (write_buf_to_include_args(flash, buf)) { + ret = 1; + goto free_out; + } + if (filename) + ret = write_buf_to_file(buf, size, filename); +free_out: + free(buf); return ret; } |