BUG/MINOR: peers: fix data_type bit computation more than 32 data_types
This patch fixes the computation of the bit of the current data_type
in some part of code of peer protocol where the computation is limited
to 32bits whereas the bitfield of data_types can support 64bits.
Without this patch it could result in bugs when we will define more
than 32 data_types.
Backport is useless because there is currently less than 32 data_types
(cherry picked from commit 08b0f6780c45099b8d03bfd9e398d3f51519e667)
Signed-off-by: Willy Tarreau <w@1wt.eu>
diff --git a/src/peers.c b/src/peers.c
index 3a980dd..5c26751 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -845,10 +845,10 @@
case STD_T_UINT:
case STD_T_ULL:
case STD_T_DICT:
- data |= 1 << data_type;
+ data |= 1ULL << data_type;
break;
case STD_T_FRQP:
- data |= 1 << data_type;
+ data |= 1ULL << data_type;
intencode(data_type, &chunkq);
intencode(st->table->data_arg[data_type].u, &chunkq);
break;
@@ -1657,7 +1657,7 @@
for (data_type = 0 ; data_type < STKTABLE_DATA_TYPES ; data_type++) {
uint64_t decoded_int;
- if (!((1 << data_type) & st->remote_data))
+ if (!((1ULL << data_type) & st->remote_data))
continue;
decoded_int = intdecode(msg_cur, msg_end);