]> git.pond.sub.org Git - empserver/commitdiff
Avoid shifting into sign bit
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 26 Jul 2015 16:00:27 +0000 (18:00 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 5 Dec 2015 11:50:54 +0000 (12:50 +0100)
It's undefined behavior.  Found with gcc -fsanitize=undefined.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
include/misc.h
src/lib/common/ef_verify.c

index 3217c39aedd18cded057faeb3e7eabe35ed30682..5318a19b9870e30a26ca5588b74747d96c306bfe 100644 (file)
@@ -52,7 +52,7 @@
 #endif
 
 #ifndef bit
-#define bit(x)         (1<<(x))
+#define bit(x)         (1U<<(x))
 #endif
 
 #define minutes(x)     (60*(x))
index f1159d6729743673c16241966dffe42e52c0756b..59f72fcb7717e6a4e1dc98c4ad9ede904805f8cc 100644 (file)
@@ -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",