From 5b32d3a13bc66b884bbf25f1409174ed34a8adc7 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Wed, 19 Apr 2023 20:02:25 +0000 Subject: api: fix trace_plugin_msg_ids segv in trace dump With 'api-trace { on }' in startup.conf, running 'api trace dump' in vppctl was causing VPP to seg fault. vl_msg_print_trace() was calling m->endian_handler() without checking whether its null. Checking if its non-null prevents a crash, but the trace dump prints the message IDs for trace_plugin_msg_ids in network byte order. There is an auto-generated endian function for that message. Set it on the call to vl_msg_api_config() for trace_plugin_msg_ids so the IDs will be printed in host byte order in trace dump output. Type: fix Fixes: fe45f8f5 Signed-off-by: Matthew Smith Change-Id: I0ab463985e9a983155feba13ac4eb99ab883ace6 --- src/vlibmemory/vlib_api_cli.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/vlibmemory/vlib_api_cli.c') diff --git a/src/vlibmemory/vlib_api_cli.c b/src/vlibmemory/vlib_api_cli.c index 5b62e61a235..f9cda9b34e9 100644 --- a/src/vlibmemory/vlib_api_cli.c +++ b/src/vlibmemory/vlib_api_cli.c @@ -683,7 +683,7 @@ vl_msg_print_trace (u8 *msg, void *ctx) return 0; } - if (clib_arch_is_little_endian) + if (clib_arch_is_little_endian && (m->endian_handler != NULL)) { u32 msg_length = vec_len (msg); vec_validate (tmpbuf, msg_length - 1); -- cgit 1.2.3-korg