]> git.kaiwu.me - njs.git/commitdiff
Fixed undefined behaviour in left shift of negative numbers.
authorValentin Bartenev <vbart@nginx.com>
Sun, 28 Jul 2019 14:19:51 +0000 (17:19 +0300)
committerValentin Bartenev <vbart@nginx.com>
Sun, 28 Jul 2019 14:19:51 +0000 (17:19 +0300)
Now it's implementation defined.

njs/njs_vmcode.c

index fae0ca7fa094f3138578cbf4d468754c15d5d652..f6068240d9038d3017d1a5d6ebd79716b4ac3d31 100644 (file)
@@ -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;
                         }