Browse Source

dtc: Avoid UB when shifting

Prevent undefined behavior when shifting by a number that's bigger than
or equal to the width of the first operand.

Signed-off-by: Andrei Ziureaev <andrei.ziureaev@arm.com>
Message-Id: <20200714154542.18064-2-andrei.ziureaev@arm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
main
Andrei Ziureaev 4 years ago committed by David Gibson
parent
commit
808cdaaf52
  1. 4
      dtc-parser.y

4
dtc-parser.y

@ -476,8 +476,8 @@ integer_rela:
; ;


integer_shift: integer_shift:
integer_shift DT_LSHIFT integer_add { $$ = $1 << $3; } integer_shift DT_LSHIFT integer_add { $$ = ($3 < 64) ? ($1 << $3) : 0; }
| integer_shift DT_RSHIFT integer_add { $$ = $1 >> $3; } | integer_shift DT_RSHIFT integer_add { $$ = ($3 < 64) ? ($1 >> $3) : 0; }
| integer_add | integer_add
; ;



Loading…
Cancel
Save