util/amdfwtool: Allow 0-length blobs

A side effect of the change 8e0dca05
"util/amdfwtool: Add generic image copy function"
was to treat a read operation of zero bytes as a failure.  Some
implementations exist that use zero length files as a means of
removing functionality.  This causes amdfwtool to exit with an
error.

Put the zero length capability back in, and generate the requested
table entry with a length field of 0x0.

TEST=Boot google/grunt, inspect PSP directory table
BUG=b:128507639

Change-Id: Ifc9204dbbf6b107f06116362358ab9d22caa71df
Signed-off-by: Marshall Dawson <marshalldawson3rd@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/31891
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-by: Martin Roth <martinroth@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Marshall Dawson 2019-03-13 14:43:17 -06:00 committed by Patrick Georgi
parent d004dac7f6
commit 02bd77379b
1 changed files with 2 additions and 2 deletions

View File

@ -424,7 +424,7 @@ static void integrate_firmwares(context *ctx,
bytes = copy_blob(BUFF_CURRENT(*ctx), bytes = copy_blob(BUFF_CURRENT(*ctx),
fw_table[i].filename, BUFF_ROOM(*ctx)); fw_table[i].filename, BUFF_ROOM(*ctx));
if (bytes <= 0) { if (bytes < 0) {
free(ctx->rom); free(ctx->rom);
exit(1); exit(1);
} }
@ -455,7 +455,7 @@ static void integrate_psp_firmwares(context *ctx,
} else if (fw_table[i].filename != NULL) { } else if (fw_table[i].filename != NULL) {
bytes = copy_blob(BUFF_CURRENT(*ctx), bytes = copy_blob(BUFF_CURRENT(*ctx),
fw_table[i].filename, BUFF_ROOM(*ctx)); fw_table[i].filename, BUFF_ROOM(*ctx));
if (bytes <= 0) { if (bytes < 0) {
free(ctx->rom); free(ctx->rom);
exit(1); exit(1);
} }