BUG/MINOR: peers: Do not ignore a protocol error for dictionary entries.
authorFrédéric Lécaille <flecaille@haproxy.com>
Thu, 12 Nov 2020 18:53:11 +0000 (19:53 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 13 Nov 2020 05:04:08 +0000 (06:04 +0100)
If we could not decode the ID of a dictionary entry from a peer update message,
we must inform the remote peer about such an error as this is done for
any other decoding error.

src/peers.c

index 276e5ce..9a0f3cb 100644 (file)
@@ -1609,8 +1609,11 @@ static int peer_treat_updatemsg(struct appctx *appctx, struct peer *p, int updt,
                        dc = p->dcache;
                        if (*msg_cur == end) {
                                /* Dictionary entry key without value. */
-                               if (id > dc->max_entries)
-                                       break;
+                               if (id > dc->max_entries) {
+                                       TRACE_PROTO("malformed message", PEERS_EV_UPDTMSG,
+                                                   NULL, p, NULL, &id);
+                                       goto malformed_unlock;
+                               }
                                /* IDs sent over the network are numbered from 1. */
                                de = dc->rx[id - 1].de;
                        }