From 8adb8a7ce296426c9081ff56b90f5eb972f2dfe3 Mon Sep 17 00:00:00 2001 From: Hadi Rayan Al-Sandid Date: Tue, 10 Dec 2024 11:05:26 +0100 Subject: [PATCH] api: fix crash in pcap capture api 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 --- src/vnet/interface_api.c | 4 ++-- test/test_pcap.py | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/vnet/interface_api.c b/src/vnet/interface_api.c index d835a36f46d..ada12454394 100644 --- a/src/vnet/interface_api.c +++ b/src/vnet/interface_api.c @@ -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; diff --git a/test/test_pcap.py b/test/test_pcap.py index 94418081ace..4daf23a7fad 100644 --- a/test/test_pcap.py +++ b/test/test_pcap.py @@ -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) -- 2.16.6