diff options
author | Edward O'Callaghan <quasisec@google.com> | 2023-01-13 14:32:14 +1100 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-03-06 06:05:01 +0000 |
commit | d60470ec4a358af8090448299889d9dfa574f093 (patch) | |
tree | 19529d154b7443ee5b5c5605d5377cc1ea759ba9 | |
parent | b12ad28df8b2f2afa03bf8c95d23a8de5ebe715c (diff) | |
download | vboot-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.c | 4 |
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); |