lib:util: Fix undefined behavior in bitmap.c
authorAndreas Schneider <asn@samba.org>
Thu, 22 Nov 2018 14:06:42 +0000 (15:06 +0100)
committerGary Lockyer <gary@samba.org>
Thu, 22 Nov 2018 21:13:27 +0000 (22:13 +0100)
lib/util/bitmap.c:77: runtime error: left shift of 1 by 31 places cannot
be represented in type 'int'

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>
lib/util/bitmap.c

index 6396335..12cdfe4 100644 (file)
@@ -74,7 +74,7 @@ bool bitmap_set(struct bitmap *bm, unsigned i)
                      i, bm->n));
                return false;
        }
-       bm->b[i/32] |= (1<<(i%32));
+       bm->b[i/32] |= (1U<<(i%32));
        return true;
 }
 
@@ -88,7 +88,7 @@ bool bitmap_clear(struct bitmap *bm, unsigned i)
                      i, bm->n));
                return false;
        }
-       bm->b[i/32] &= ~(1<<(i%32));
+       bm->b[i/32] &= ~(1U<<(i%32));
        return true;
 }
 
@@ -98,7 +98,7 @@ query a bit in a bitmap
 bool bitmap_query(struct bitmap *bm, unsigned i)
 {
        if (i >= bm->n) return false;
-       if (bm->b[i/32] & (1<<(i%32))) {
+       if (bm->b[i/32] & (1U<<(i%32))) {
                return true;
        }
        return false;