summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward O'Callaghan <quasisec@google.com>2023-01-13 14:32:14 +1100
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-03-06 06:05:01 +0000
commitd60470ec4a358af8090448299889d9dfa574f093 (patch)
tree19529d154b7443ee5b5c5605d5377cc1ea759ba9
parentb12ad28df8b2f2afa03bf8c95d23a8de5ebe715c (diff)
downloadvboot-d60470ec4a358af8090448299889d9dfa574f093.tar.gz
futility/cmd_gbb_utility.c: Check wp status before flash write()
Check write-protect status before attempting to write to SPI flash. BUG=b:238694831,b:260531154 BRANCH=none TEST=``` [..] SPI Configuration is locked down. FREG0: Flash Descriptor region (0x00000000-0x00000fff) is read-write. FREG1: BIOS region (0x003a0000-0x01ffffff) is read-write. FREG2: Management Engine region (0x00001000-0x0039ffff) is read-write. OK. Found Winbond flash chip "W25Q256JV_M" (32768 kB, Programmer-specific) on host. ERROR: write_to_flash: You must disable write protection before setting flags. ``` Cq-Depend: chromium:4303349 Change-Id: I46d72a8867292599bf1a7287d63c62999df41c8e Signed-off-by: Edward O'Callaghan <quasisec@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/4161094 Commit-Queue: Edward O'Callaghan <quasisec@chromium.org> Auto-Submit: Edward O'Callaghan <quasisec@chromium.org> Commit-Queue: Yu-Ping Wu <yupingso@chromium.org> Tested-by: Edward O'Callaghan <quasisec@chromium.org> Reviewed-by: Yu-Ping Wu <yupingso@chromium.org>
-rw-r--r--futility/cmd_gbb_utility.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/futility/cmd_gbb_utility.c b/futility/cmd_gbb_utility.c
index 916f4eb4..db0c04a1 100644
--- a/futility/cmd_gbb_utility.c
+++ b/futility/cmd_gbb_utility.c
@@ -440,6 +440,10 @@ static int write_to_flash(struct updater_config *cfg, uint8_t *outbuf,
off_t filesize)
{
#ifdef USE_FLASHROM
+ if (is_write_protection_enabled(cfg) == WP_ENABLED) {
+ ERROR("You must disable write protection before setting flags.\n");
+ return -1;
+ }
cfg->image.data = outbuf;
cfg->image.size = filesize;
int ret = write_firmware(cfg, &cfg->image, FMAP_RO_GBB);