From d35e556c84d775989ba606457da6093c74b1bd3f Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Fri, 3 Jan 2020 17:48:36 -0500 Subject: [PATCH 1/2] lib: add macro to check if value is valid afi Signed-off-by: Quentin Young --- lib/zebra.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/zebra.h b/lib/zebra.h index 00d422cdd1..b2f0202c53 100644 --- a/lib/zebra.h +++ b/lib/zebra.h @@ -360,6 +360,8 @@ typedef enum { AFI_MAX = 4 } afi_t; +#define IS_VALID_AFI(a) ((a) > AFI_UNSPEC && (a) < AFI_MAX) + /* Subsequent Address Family Identifier. */ typedef enum { SAFI_UNSPEC = 0, From 663d3a9115b55e4fd9c8d3b0ce3adb25248c40dd Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Fri, 3 Jan 2020 17:49:01 -0500 Subject: [PATCH 2/2] zebra: check afi validity in vrf label message Signed-off-by: Quentin Young --- zebra/zapi_msg.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/zebra/zapi_msg.c b/zebra/zapi_msg.c index db54e6f25b..0ac17a0f4a 100644 --- a/zebra/zapi_msg.c +++ b/zebra/zapi_msg.c @@ -2272,6 +2272,12 @@ static void zread_vrf_label(ZAPI_HANDLER_ARGS) s = msg; STREAM_GETL(s, nlabel); STREAM_GETC(s, afi); + + if (!(IS_VALID_AFI(afi))) { + zlog_warn("Invalid AFI for VRF label: %u", afi); + return; + } + if (nlabel == zvrf->label[afi]) { /* * Nothing to do here move along