From 08b0f6780c45099b8d03bfd9e398d3f51519e667 Mon Sep 17 00:00:00 2001 From: Emeric Brun Date: Thu, 1 Jul 2021 18:54:05 +0200 Subject: [PATCH] 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 --- src/peers.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/peers.c b/src/peers.c index 5f71d1e27..87a12847c 100644 --- a/src/peers.c +++ b/src/peers.c @@ -859,10 +859,10 @@ static int peer_prepare_switchmsg(char *msg, size_t size, struct peer_prep_param 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; @@ -1671,7 +1671,7 @@ static int peer_treat_updatemsg(struct appctx *appctx, struct peer *p, int updt, 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);