From b9375b14b1ee1247ec4830d99143a5847e05ac33 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sun, 26 Jul 2015 18:00:27 +0200 Subject: [PATCH] Avoid shifting into sign bit It's undefined behavior. Found with gcc -fsanitize=undefined. Signed-off-by: Markus Armbruster --- include/misc.h | 2 +- src/lib/common/ef_verify.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/misc.h b/include/misc.h index 3217c39a..5318a19b 100644 --- a/include/misc.h +++ b/include/misc.h @@ -52,7 +52,7 @@ #endif #ifndef bit -#define bit(x) (1<<(x)) +#define bit(x) (1U<<(x)) #endif #define minutes(x) (60*(x)) diff --git a/src/lib/common/ef_verify.c b/src/lib/common/ef_verify.c index f1159d67..59f72fcb 100644 --- a/src/lib/common/ef_verify.c +++ b/src/lib/common/ef_verify.c @@ -97,7 +97,7 @@ verify_tabref(int type, int row, struct castr *ca, int idx, long val) if (CANT_HAPPEN(ca_sym != symbol_ca)) return -1; for (i = 0; i < (int)sizeof(long) * 8; i++) { - if (val & (1L << i)) { + if (val & (1UL << i)) { if (!symbol_by_value(1L << i, ef_ptr(tabno, 0))) { verify_fail(type, row, ca, idx, "bit %d is not in symbol table %s",