From b06e55c88b9b922ff7e25cd62a4709b65524f0fc Mon Sep 17 00:00:00 2001 From: David Gibson Date: Tue, 12 Jan 2016 19:27:25 +1100 Subject: [PATCH] Prevent crash on modulo by zero 1937095 "Prevent crash on division by zero" fixed a crash when attempting a division by zero using the / operator in a dts. However, it missed the precisely equivalent crash with the % (modulus) operator. This patch fixes the oversight. Reported-by: Anton Blanchard Signed-off-by: David Gibson --- dtc-parser.y | 10 +++++++++- tests/division-by-zero.dts | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dtc-parser.y b/dtc-parser.y index 00d4dbb..000873f 100644 --- a/dtc-parser.y +++ b/dtc-parser.y @@ -419,7 +419,15 @@ integer_mul: $$ = 0; } } - | integer_mul '%' integer_unary { $$ = $1 % $3; } + | integer_mul '%' integer_unary + { + if ($3 != 0) { + $$ = $1 % $3; + } else { + ERROR(&@$, "Division by zero"); + $$ = 0; + } + } | integer_unary ; diff --git a/tests/division-by-zero.dts b/tests/division-by-zero.dts index d26fc27..2984b29 100644 --- a/tests/division-by-zero.dts +++ b/tests/division-by-zero.dts @@ -1,5 +1,6 @@ /dts-v1/; / { - prop = < (1/0) >; + prop-div = < (1/0) >; + prop-mod = < (1%0) >; };