summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHung-Te Lin <hungte@chromium.org>2014-09-11 11:50:03 +0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-09-12 00:56:05 +0000
commit70c81b61c05b18c311372695b92ca8ab2cbe3410 (patch)
tree943bb953874e38ec146edcb5ffb33dfc6b8bd578
parentef376b41af8287d421e3d08be6200f0f3cb38fc6 (diff)
downloadvboot-70c81b61c05b18c311372695b92ca8ab2cbe3410.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>
-rw-r--r--futility/cmd_gbb_utility.c6
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);
}