summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHadi Rayan Al-Sandid <halsandi@cisco.com>2024-11-26 17:25:27 +0100
committerBeno�t Ganne <bganne@cisco.com>2024-11-27 08:20:17 +0000
commit7d469364c5d9f7dc1b42143a6c6a4a7aafe89b34 (patch)
treeba3d36471c0cdb5e4026488b8746fb249bf40998
parent1beb88ed3ba28b5e51b1a8d8d5573645c048031a (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.c2
-rw-r--r--test/test_pcap.py10
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)