From 7d469364c5d9f7dc1b42143a6c6a4a7aafe89b34 Mon Sep 17 00:00:00 2001 From: Hadi Rayan Al-Sandid Date: Tue, 26 Nov 2024 17:25:27 +0100 Subject: [PATCH] api: fix bug in pcap capture api pcap api cleanup can cause crash in certain scenarios e.g.missing/invalid 'filename' parameter. Type: fix Change-Id: I92417765960de84e30ed7cb945d40c50d722fb6c Signed-off-by: Hadi Rayan Al-Sandid --- src/vnet/interface_api.c | 2 +- test/test_pcap.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/vnet/interface_api.c b/src/vnet/interface_api.c index 69bf4b72ba4..65f3a02c86b 100644 --- a/src/vnet/interface_api.c +++ b/src/vnet/interface_api.c @@ -1653,6 +1653,7 @@ vl_api_pcap_trace_on_t_handler (vl_api_pcap_trace_on_t *mp) unformat_init_cstring (&drop_err_name, (char *) mp->error); unformat_user (&drop_err_name, unformat_vlib_error, vlib_get_main (), &capture_args.drop_err); + unformat_free (&drop_err_name); rv = vnet_pcap_dispatch_trace_configure (&capture_args); @@ -1660,7 +1661,6 @@ vl_api_pcap_trace_on_t_handler (vl_api_pcap_trace_on_t *mp) out: unformat_free (&filename); - unformat_free (&drop_err_name); REPLY_MACRO (VL_API_PCAP_TRACE_ON_REPLY); } diff --git a/test/test_pcap.py b/test/test_pcap.py index b73a601bcc8..1169dcccfc1 100644 --- a/test/test_pcap.py +++ b/test/test_pcap.py @@ -163,6 +163,16 @@ class TestPcap(VppTestCase): os.remove("/tmp/trace_any_filter.pcap") os.remove("/tmp/trace_drop_err.pcap") + # Attempting to start a trace with no filename 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=0, + ) + if __name__ == "__main__": unittest.main(testRunner=VppTestRunner) -- 2.16.6