lib:util: Fix undefined behavior in idtree
authorAndreas Schneider <asn@samba.org>
Thu, 22 Nov 2018 13:53:21 +0000 (14:53 +0100)
committerGary Lockyer <gary@samba.org>
Thu, 22 Nov 2018 21:13:27 +0000 (22:13 +0100)
lib/util/idtree.c:84 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/idtree.c

index 72266a6..d72ddfb 100644 (file)
@@ -50,9 +50,9 @@
 #define MAX_LEVEL (MAX_ID_SHIFT + IDR_BITS - 1) / IDR_BITS
 #define IDR_FREE_MAX MAX_LEVEL + MAX_LEVEL
 
-#define set_bit(bit, v) (v) |= (1<<(bit))
-#define clear_bit(bit, v) (v) &= ~(1<<(bit))
-#define test_bit(bit, v) ((v) & (1<<(bit)))
+#define set_bit(bit, v) (v) |= (1U<<(bit))
+#define clear_bit(bit, v) (v) &= ~(1U<<(bit))
+#define test_bit(bit, v) ((v) & (1U<<(bit)))
 
 struct idr_layer {
        uint32_t                 bitmap;