From 878d839596610957f0e0c1101d2af23dcd060a3e Mon Sep 17 00:00:00 2001 From: Ryan Salsamendi Date: Fri, 9 Jun 2017 19:47:57 -0700 Subject: [PATCH] UPSTREAM: cbmem_console: Fix undefined behavior Fixes report found by undefined behavior sanitizer. Left shifting an int where the right operand is >= width of type is undefined. Add ul suffix since it's safe for unsigned types. BUG=none BRANCH=none TEST=none Change-Id: I76262ee24dc89fac3d2b027ded72f1f32afaa580 Signed-off-by: Patrick Georgi Original-Commit-Id: fce582fa1c928051a3847d35cc334d040159aafb Original-Change-Id: I4b2365428e421085285006bc1ea8aea75890ff65 Original-Signed-off-by: Ryan Salsamendi Original-Reviewed-on: https://review.coreboot.org/20144 Original-Tested-by: build bot (Jenkins) Original-Reviewed-by: Paul Menzel Original-Reviewed-by: Philippe Mathieu-Daud Original-Reviewed-by: Martin Roth Original-Reviewed-by: Youness Alaoui Reviewed-on: https://chromium-review.googlesource.com/539203 Commit-Ready: Patrick Georgi Tested-by: Patrick Georgi Reviewed-by: Patrick Georgi --- src/lib/cbmem_console.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/cbmem_console.c b/src/lib/cbmem_console.c index b0008b1d9c..34363904b5 100644 --- a/src/lib/cbmem_console.c +++ b/src/lib/cbmem_console.c @@ -47,7 +47,7 @@ struct cbmem_console { #define MAX_SIZE (1 << 28) /* can't be changed without breaking readers! */ #define CURSOR_MASK (MAX_SIZE - 1) /* bits 31-28 are reserved for flags */ -#define OVERFLOW (1 << 31) /* set if in ring-buffer mode */ +#define OVERFLOW (1UL << 31) /* set if in ring-buffer mode */ _Static_assert(CONFIG_CONSOLE_CBMEM_BUFFER_SIZE <= MAX_SIZE, "cbmem_console format cannot support buffers larger than 256MB!");