diff options
author | 2024-11-26 17:25:27 +0100 | |
---|---|---|
committer | 2024-11-27 08:20:17 +0000 | |
commit | 7d469364c5d9f7dc1b42143a6c6a4a7aafe89b34 (patch) | |
tree | ba3d36471c0cdb5e4026488b8746fb249bf40998 | |
parent | 1beb88ed3ba28b5e51b1a8d8d5573645c048031a (diff) |
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 <halsandi@cisco.com>
-rw-r--r-- | src/vnet/interface_api.c | 2 | ||||
-rw-r--r-- | test/test_pcap.py | 10 |
2 files changed, 11 insertions, 1 deletions
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) |