summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvan Benn <evanbenn@chromium.org>2022-10-05 11:47:53 +1100
committerFelix Singer <felixsinger@posteo.net>2022-10-08 20:29:47 +0000
commit634da83f403a86702670514447c8e76466cbcd75 (patch)
treefe5f1170fec347d3a452817b8754fab18ec728a4
parent7c40ba24fe73f820370d99a35ff071d667ef7c74 (diff)
downloadflashrom-634da83f403a86702670514447c8e76466cbcd75.tar.gz
flashrom-634da83f403a86702670514447c8e76466cbcd75.tar.bz2
flashrom-634da83f403a86702670514447c8e76466cbcd75.zip
s25f.c: Fix undefined behaviour on shift
dev_id, a uint8_t, was shifted left by 24 bits. After promotion to int, this results in shifting into the sign bit, which is undefined behaviour. Cast to uint32_t to prevent the promotion to signed int. BUG=None BRANCH=None TEST=None Change-Id: I88188ef2ba2af919eeae9ba08916374d31d8b989 Signed-off-by: Evan Benn <evanbenn@chromium.org> Reviewed-on: https://review.coreboot.org/c/flashrom/+/68127 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Felix Singer <felixsinger@posteo.net>
-rw-r--r--s25f.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/s25f.c b/s25f.c
index 67715ed47..1133ef87a 100644
--- a/s25f.c
+++ b/s25f.c
@@ -380,10 +380,10 @@ int probe_spi_big_spansion(struct flashctx *flash)
*/
uint32_t model_id =
- dev_id[1] << 24 |
- dev_id[2] << 16 |
- dev_id[4] << 8 |
- dev_id[5] << 0;
+ (uint32_t)dev_id[1] << 24 |
+ (uint32_t)dev_id[2] << 16 |
+ (uint32_t)dev_id[4] << 8 |
+ (uint32_t)dev_id[5] << 0;
if (dev_id[0] == flash->chip->manufacture_id && model_id == flash->chip->model_id)
return 1;