linux-cp: fix seg fault in get_v2 methods 74/40674/3
authorAnton Nikolaev <anikolaev@netgate.com>
Thu, 22 Feb 2024 09:21:45 +0000 (09:21 +0000)
committerMatthew Smith <mgsmith@netgate.com>
Mon, 15 Apr 2024 14:41:21 +0000 (14:41 +0000)
vl_api_lcp_itf_pair_get_v2_t_handler method was not be able to
handle invalid sw_if_index, it caused a seg fault.

With this fix, the method checks for an invalid sw_if_index and
sends error back to caller.

Type: fix
Change-Id: I4e89b0cab34f9109c4ce2689021ecfc2786055ab
Signed-off-by: Anton Nikolaev <anikolaev@netgate.com>
src/plugins/linux-cp/lcp_api.c

index 991516a..7442123 100644 (file)
@@ -214,9 +214,16 @@ vl_api_lcp_itf_pair_get_v2_t_handler (vl_api_lcp_itf_pair_get_v2_t *mp)
   else
     {
       VALIDATE_SW_IF_INDEX_END (mp);
+
+      u32 pair_index = lcp_itf_pair_find_by_phy (mp->sw_if_index);
+      if (pair_index == INDEX_INVALID)
+       {
+         rv = VNET_API_ERROR_INVALID_SW_IF_INDEX;
+         goto bad_sw_if_index;
+       }
       send_lcp_itf_pair_details (
-       lcp_itf_pair_find_by_phy (mp->sw_if_index),
-       vl_api_client_index_to_registration (mp->client_index), mp->context);
+       pair_index, vl_api_client_index_to_registration (mp->client_index),
+       mp->context);
 
       BAD_SW_IF_INDEX_LABEL;
       REPLY_MACRO2_END (VL_API_LCP_ITF_PAIR_GET_V2_REPLY,