aboutgitcodebugslistschat
path: root/util.c
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2022-02-01 02:36:16 +0100
committerStefano Brivio <sbrivio@redhat.com>2022-02-01 02:36:16 +0100
commit80283e6aea8d9d8b48d4746b9b42883d803bee13 (patch)
treefea065a1c5d1cd0ed8b3078ff47853668df64670 /util.c
parent154216d483d5062e3c698ac240e6fc3fdccd9498 (diff)
downloadpasst-80283e6aea8d9d8b48d4746b9b42883d803bee13.tar
passt-80283e6aea8d9d8b48d4746b9b42883d803bee13.tar.gz
passt-80283e6aea8d9d8b48d4746b9b42883d803bee13.tar.bz2
passt-80283e6aea8d9d8b48d4746b9b42883d803bee13.tar.lz
passt-80283e6aea8d9d8b48d4746b9b42883d803bee13.tar.xz
passt-80283e6aea8d9d8b48d4746b9b42883d803bee13.tar.zst
passt-80283e6aea8d9d8b48d4746b9b42883d803bee13.zip
util: Avoid return of possibly truncated unsigned long in bitmap_isset()
Oops. If *word & BITMAP_BIT(bit) is bigger than an int (which is the case for half of the possible bits of a bitmap on 64-bit archs), we'll return that as an int, that is, zero, even if the bit at hand is set. Just return zero or one there, no callers are interested in the actual bitmap as return value. Issue found as pasta wouldn't automatically detect some bound ports. Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'util.c')
-rw-r--r--util.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/util.c b/util.c
index 57b987a..94d49a6 100644
--- a/util.c
+++ b/util.c
@@ -366,13 +366,13 @@ void bitmap_clear(uint8_t *map, int bit)
* @map: Pointer to bitmap
* @bit: Bit number to check
*
- * Return: non-zero if given bit is set, zero if it's not
+ * Return: one if given bit is set, zero if it's not
*/
int bitmap_isset(const uint8_t *map, int bit)
{
unsigned long *word = (unsigned long *)map + BITMAP_WORD(bit);
- return *word & BITMAP_BIT(bit);
+ return !!(*word & BITMAP_BIT(bit));
}
/**