From 2d7ba6381876d9592bf804bb15e0037ebdec5800 Mon Sep 17 00:00:00 2001 From: Valentin Bartenev Date: Sun, 28 Jul 2019 17:19:51 +0300 Subject: [PATCH] Fixed undefined behaviour in left shift of negative numbers. Now it's implementation defined. --- njs/njs_vmcode.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/njs/njs_vmcode.c b/njs/njs_vmcode.c index fae0ca7f..f6068240 100644 --- a/njs/njs_vmcode.c +++ b/njs/njs_vmcode.c @@ -421,7 +421,8 @@ next: i32 = njs_number_to_int32(num); if (op == NJS_VMCODE_LEFT_SHIFT) { - i32 <<= u32; + /* Shifting of negative numbers is undefined. */ + i32 = (uint32_t) i32 << u32; } else { i32 >>= u32; } -- 2.47.3