Felix Singer has submitted this change. ( https://review.coreboot.org/c/flashrom/+/68127 )
Change subject: s25f.c: Fix undefined behaviour on shift ......................................................................
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(-)
Approvals: build bot (Jenkins): Verified Felix Singer: Looks good to me, approved Angel Pons: Looks good to me, approved
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;