Felix Singer submitted this change.

View Change


Approvals: build bot (Jenkins): Verified Felix Singer: Looks good to me, approved Angel Pons: Looks good to me, approved
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>
---
M s25f.c
1 file changed, 26 insertions(+), 4 deletions(-)

diff --git a/s25f.c b/s25f.c
index 67715ed..1133ef8 100644
--- a/s25f.c
+++ b/s25f.c
@@ -380,10 +380,10 @@
*/

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;

To view, visit change 68127. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: I88188ef2ba2af919eeae9ba08916374d31d8b989
Gerrit-Change-Number: 68127
Gerrit-PatchSet: 3
Gerrit-Owner: Evan Benn <evanbenn@google.com>
Gerrit-Reviewer: Angel Pons <th3fanbus@gmail.com>
Gerrit-Reviewer: Felix Singer <felixsinger@posteo.net>
Gerrit-Reviewer: Nikolai Artemiev <nartemiev@google.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-MessageType: merged