diff options
author | Andrei Ziureaev <andrei.ziureaev@arm.com> | 2020-07-14 16:45:37 +0100 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2020-07-15 20:40:54 +1000 |
commit | 808cdaaf524f6beb95e0ea87fc42711dbddef21a (patch) | |
tree | 2e0d6fc07627766861ed40ffb88cf453753f990a /dtc-parser.y | |
parent | 3e3138b4a9565934487d7b39019282e75a894487 (diff) | |
download | dtc-808cdaaf524f6beb95e0ea87fc42711dbddef21a.zip dtc-808cdaaf524f6beb95e0ea87fc42711dbddef21a.tar.gz dtc-808cdaaf524f6beb95e0ea87fc42711dbddef21a.tar.bz2 |
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>
Diffstat (limited to 'dtc-parser.y')
-rw-r--r-- | dtc-parser.y | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/dtc-parser.y b/dtc-parser.y index 40dcf4f..a0316a3 100644 --- a/dtc-parser.y +++ b/dtc-parser.y @@ -476,8 +476,8 @@ integer_rela: ; integer_shift: - integer_shift DT_LSHIFT integer_add { $$ = $1 << $3; } - | integer_shift DT_RSHIFT integer_add { $$ = $1 >> $3; } + integer_shift DT_LSHIFT integer_add { $$ = ($3 < 64) ? ($1 << $3) : 0; } + | integer_shift DT_RSHIFT integer_add { $$ = ($3 < 64) ? ($1 >> $3) : 0; } | integer_add ; |