diff options
author | Edward O'Callaghan <quasisec@google.com> | 2020-12-29 18:54:31 +1100 |
---|---|---|
committer | Edward O'Callaghan <quasisec@chromium.org> | 2021-01-01 23:46:57 +0000 |
commit | c9b31f5738db9bf2f4d82bd3db2ec78dc2bb4f14 (patch) | |
tree | c23a77417145565bffb287baeb9a3ab532f05023 | |
parent | ef42b5edb346a8daaf9e732f9f8c317d763e48ac (diff) | |
download | flashrom-c9b31f5738db9bf2f4d82bd3db2ec78dc2bb4f14.tar.gz flashrom-c9b31f5738db9bf2f4d82bd3db2ec78dc2bb4f14.tar.bz2 flashrom-c9b31f5738db9bf2f4d82bd3db2ec78dc2bb4f14.zip |
realtek_mst_i2c_spi.c: Don't depend on int overflows
Be explicit to mask the first byte after the shifts as
highlighted by Angel Pons.
BUG=none
BRANCH=none
TEST=builds
Change-Id: I7d1215678094d709e79b8f8c96aa3810586cd72e
Signed-off-by: Edward O'Callaghan <quasisec@google.com>
Spotted-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/48974
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Shiyu Sun <sshiyu@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r-- | realtek_mst_i2c_spi.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/realtek_mst_i2c_spi.c b/realtek_mst_i2c_spi.c index dabec70b5..3e84b2381 100644 --- a/realtek_mst_i2c_spi.c +++ b/realtek_mst_i2c_spi.c @@ -330,9 +330,9 @@ static int realtek_mst_i2c_spi_read(struct flashctx *flash, uint8_t *buf, start--; ret |= realtek_mst_i2c_spi_write_register(fd, 0x60, 0x46); // ** ret |= realtek_mst_i2c_spi_write_register(fd, 0x61, OPCODE_READ); - uint8_t block_idx = start >> 16; - uint8_t page_idx = start >> 8; - uint8_t byte_idx = start; + uint8_t block_idx = (start >> 16) & 0xff; + uint8_t page_idx = (start >> 8) & 0xff; + uint8_t byte_idx = start & 0xff; ret |= realtek_mst_i2c_spi_map_page(fd, block_idx, page_idx, byte_idx); ret |= realtek_mst_i2c_spi_write_register(fd, 0x6a, 0x03); ret |= realtek_mst_i2c_spi_write_register(fd, 0x60, 0x47); // ** @@ -384,9 +384,9 @@ static int realtek_mst_i2c_spi_write_256(struct flashctx *flash, const uint8_t * uint16_t page_len = min(len - i, PAGE_SIZE); if (len - i < PAGE_SIZE) ret |= realtek_mst_i2c_spi_write_register(fd, 0x71, page_len-1); - uint8_t block_idx = (start + i) >> 16; - uint8_t page_idx = (start + i) >> 8; - uint8_t byte_idx = start + i; + uint8_t block_idx = ((start + i) >> 16) & 0xff; + uint8_t page_idx = ((start + i) >> 8) & 0xff; + uint8_t byte_idx = (start + i) & 0xff; ret |= realtek_mst_i2c_spi_map_page(fd, block_idx, page_idx, byte_idx); if (ret) break; |