[coreboot-gerrit] Patch set updated for coreboot: 341ec18 cbfstool: Properly handle EOF in update_fit step

Alexandru Gagniuc (mr.nuke.me@gmail.com) gerrit at coreboot.org
Mon Dec 9 04:53:28 CET 2013


Alexandru Gagniuc (mr.nuke.me at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/4508

-gerrit

commit 341ec183e056af4935f46b15e4649298b4d86903
Author: Alexandru Gagniuc <mr.nuke.me at gmail.com>
Date:   Sun Dec 8 17:46:40 2013 -0600

    cbfstool: Properly handle EOF in update_fit step
    
    During the update_fit step, 'file_length' is used to determine how many
    bytes are left in the CBFS file. It was decremented in a loop from an
    array 'mcus[num_mcus].size', but 'num_mcus' was incremented right before.
    Since 'mcus' is memset(0) externally, 'file_length' was never decremented.
    
    The loop exited when it reached a dummy terminator, usually 48 bytes of 0
    which are internationally added to microcode blobs in coreboot. However,
    if that terminator is removed, the loop doesn't stop and continues until
    it segfaults.
    
    Change-Id: I840727add69379ffef75b694d90402ed89769e3b
    Signed-off-by: Alexandru Gagniuc <mr.nuke.me at gmail.com>
---
 util/cbfstool/fit.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/util/cbfstool/fit.c b/util/cbfstool/fit.c
index 02cfaee..c76ba48 100644
--- a/util/cbfstool/fit.c
+++ b/util/cbfstool/fit.c
@@ -216,8 +216,8 @@ static int parse_microcode_blob(struct cbfs_image *image,
 
 		/* Proceed to next payload. */
 		current_offset += mcus[num_mcus].size;
-		num_mcus++;
 		file_length -= mcus[num_mcus].size;
+		num_mcus++;
 
 		/* Reached limit of FIT entries. */
 		if (num_mcus == *total_mcus)



More information about the coreboot-gerrit mailing list