From 2fa384a90163bab6692f6a5ac05b97d33eb3da60 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Thu, 23 Feb 2023 13:29:32 -0500 Subject: [PATCH] bgpd: Flowspec overflow issue According to the flowspec RFC 8955 a flowspec nlri is > Specifying 0 as a length makes BGP get all warm on the inside. Which in this case is not a good thing at all. Prevent warmth, stay cold on the inside. Reported-by: Iggy Frankovic Signed-off-by: Donald Sharp (cherry picked from commit 0b999c886e241c52bd1f7ef0066700e4b618ebb3) --- bgpd/bgp_flowspec.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bgpd/bgp_flowspec.c b/bgpd/bgp_flowspec.c index 341cfe9d07..6eca1e1bdf 100644 --- a/bgpd/bgp_flowspec.c +++ b/bgpd/bgp_flowspec.c @@ -141,6 +141,13 @@ int bgp_nlri_parse_flowspec(struct peer *peer, struct attr *attr, psize); return BGP_NLRI_PARSE_ERROR_PACKET_OVERFLOW; } + + if (psize == 0) { + flog_err(EC_BGP_FLOWSPEC_PACKET, + "Flowspec NLRI length 0 which makes no sense"); + return BGP_NLRI_PARSE_ERROR_PACKET_OVERFLOW; + } + if (bgp_fs_nlri_validate(pnt, psize, afi) < 0) { flog_err( EC_BGP_FLOWSPEC_PACKET, -- 2.39.5