diff options
author | Hung-Te Lin <hungte@chromium.org> | 2014-09-11 11:50:03 +0800 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-11-06 01:15:32 +0000 |
commit | b73921cdf8dce6be4fbd7f2864cdb3c416d3fff7 (patch) | |
tree | 943bb953874e38ec146edcb5ffb33dfc6b8bd578 | |
parent | 1fc3b32580733c65abb843dbd764b6cc9a2307cc (diff) | |
download | vboot-b73921cdf8dce6be4fbd7f2864cdb3c416d3fff7.tar.gz |
futility: Wipe GBB data before writing new values.
The previous version of gbb_utility always zeros data before
writing new values and we should keep this behavior, to simplify
firmware hash calculation and potential security concern.
BRANCH=none
BUG=chromium:413066
TEST=emerge gbb_utility; factory/bin/gooftool get_firmware_hash bios.bin
Original-Change-Id: Ic97a118cefc9698d52d9370b627670ff103d5e23
Change-Id: If38e15f35ee491cc80f96b360c63ee25f71c1854
Reviewed-on: https://chromium-review.googlesource.com/217700
Reviewed-by: Hung-Te Lin <hungte@chromium.org>
Commit-Queue: Hung-Te Lin <hungte@chromium.org>
Tested-by: Hung-Te Lin <hungte@chromium.org>
(cherry picked from commit 3c8d29c204c6feb91ad951e2e1c5190d4ca98a13)
Reviewed-on: https://chromium-review.googlesource.com/217711
Commit-Queue: Bill Richardson <wfrichar@chromium.org>
Tested-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/227867
Tested-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Commit-Queue: Daisuke Nojiri <dnojiri@chromium.org>
-rw-r--r-- | futility/cmd_gbb_utility.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/futility/cmd_gbb_utility.c b/futility/cmd_gbb_utility.c index 428f05b2..8d742cb9 100644 --- a/futility/cmd_gbb_utility.c +++ b/futility/cmd_gbb_utility.c @@ -300,6 +300,9 @@ static int read_from_file(const char *msg, const char *filename, goto done_close; } + /* Wipe existing data. */ + memset(start, 0, size); + /* It's okay if we read less than size. That's just the max. */ count = fread(start, 1, size, fp); if (ferror(fp)) { @@ -526,6 +529,9 @@ static int do_gbb_utility(int argc, char *argv[]) gbb->hwid_size); errorcnt++; } else { + /* Wipe data before writing new value. */ + memset(gbb_base + gbb->hwid_offset, 0, + gbb->hwid_size); strcpy((char *)(gbb_base + gbb->hwid_offset), opt_hwid); } |