summaryrefslogtreecommitdiffstats
path: root/lib/zclient.c
diff options
context:
space:
mode:
authorQuentin Young <qlyoung@cumulusnetworks.com>2020-01-04 01:07:25 +0100
committerQuentin Young <qlyoung@cumulusnetworks.com>2020-01-06 18:43:29 +0100
commitb900b3c6a4018415a385d76207489347cd629062 (patch)
tree1f7a9592e8cf2d152848f84b5635e3f2a51ea608 /lib/zclient.c
parentMerge pull request #5611 from qlyoung/fix-bgp-no-listen-docstring (diff)
downloadfrr-b900b3c6a4018415a385d76207489347cd629062.tar.xz
frr-b900b3c6a4018415a385d76207489347cd629062.zip
lib: dont decode more nexthops than we can handle
If someone provides us more nexthops than our configured multipath setting, drop the rest of them Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Diffstat (limited to '')
-rw-r--r--lib/zclient.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/zclient.c b/lib/zclient.c
index 6982d287a..fd1b181e5 100644
--- a/lib/zclient.c
+++ b/lib/zclient.c
@@ -2679,6 +2679,17 @@ int zapi_labels_decode(struct stream *s, struct zapi_labels *zl)
}
STREAM_GETW(s, zl->nexthop_num);
+
+ if (zl->nexthop_num > MULTIPATH_NUM) {
+ flog_warn(
+ EC_LIB_ZAPI_ENCODE,
+ "%s: Prefix %pFX has %d nexthops, but we can only use the first %d",
+ __func__, &zl->route.prefix, zl->nexthop_num,
+ MULTIPATH_NUM);
+ }
+
+ zl->nexthop_num = MIN(MULTIPATH_NUM, zl->nexthop_num);
+
for (int i = 0; i < zl->nexthop_num; i++) {
znh = &zl->nexthops[i];