Browse Source

Fix a ubsan warning in addr_mask_get_bits

ubsan doesn't like us to do (1u<<32) when 32 is wider than
unsigned.  Fortunately, we already special-case
addr_mask_get_bits(0), so we can just change the loop bounds.
Nick Mathewson 10 years ago
parent
commit
dfdeb6418d
1 changed files with 1 additions and 1 deletions
  1. 1 1
      src/common/address.c

+ 1 - 1
src/common/address.c

@@ -1585,7 +1585,7 @@ addr_mask_get_bits(uint32_t mask)
     return 0;
   if (mask == 0xFFFFFFFFu)
     return 32;
-  for (i=0; i<=32; ++i) {
+  for (i=1; i<=32; ++i) {
     if (mask == (uint32_t) ~((1u<<(32-i))-1)) {
       return i;
     }