api: fix crash in pcap capture api 85/41985/2
authorHadi Rayan Al-Sandid <[email protected]>
Tue, 10 Dec 2024 10:05:26 +0000 (11:05 +0100)
committerBenoit Ganne <[email protected]>
Wed, 6 Aug 2025 07:30:47 +0000 (07:30 +0000)
pcap api cleanup can cause crash if invalid sw_if_index
is provided. This fix is similar to https://gerrit.fd.io/r/c/vpp/+/41936
, which only fixed the invalid filename use-case.

Type: fix

Change-Id: I34ce178a4cb7fc92b4e4bb399a3fabd4efc85159
Signed-off-by: Hadi Rayan Al-Sandid <[email protected]>
src/vnet/interface_api.c
test/test_pcap.py

index d835a36..ada1245 100644 (file)
@@ -1628,8 +1628,6 @@ vl_api_pcap_trace_on_t_handler (vl_api_pcap_trace_on_t *mp)
   vnet_pcap_dispatch_trace_args_t capture_args;
   int rv = 0;
 
-  VALIDATE_SW_IF_INDEX (mp);
-
   unformat_init_cstring (&filename, (char *) mp->filename);
   if (!unformat_user (&filename, unformat_vlib_tmpfile,
                      &capture_args.filename))
@@ -1638,6 +1636,8 @@ vl_api_pcap_trace_on_t_handler (vl_api_pcap_trace_on_t *mp)
       goto out;
     }
 
+  VALIDATE_SW_IF_INDEX (mp);
+
   capture_args.rx_enable = mp->capture_rx;
   capture_args.tx_enable = mp->capture_tx;
   capture_args.preallocate_data = mp->preallocate_data;
index 9441808..4daf23a 100644 (file)
@@ -190,6 +190,16 @@ class TestPcap(VppTestCase):
                 sw_if_index=0,
             )
 
+        # Attempting to start a trace with an invalid sw_if_index should return an error
+        with self.vapi.assert_negative_api_retval():
+            self.vapi.pcap_trace_on(
+                capture_rx=True,
+                capture_tx=True,
+                filter=True,
+                max_packets=1000,
+                sw_if_index=0xFFFFFF,
+            )
+
 
 if __name__ == "__main__":
     unittest.main(testRunner=VppTestRunner)