From e5c00317def944bb675e143d55542d7e654d6f56 Mon Sep 17 00:00:00 2001 From: Pavel Hrdina Date: Wed, 20 May 2020 22:52:05 +0200 Subject: [PATCH] wireshark: fix compilation errors MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit With meson introduction which is using the same CFLAGS for the whole project some compilation errors were discovered. The wireshark plugin library is the only one in tools directory that is not using AM_CFLAGS. With the AM_CFLAGS we get these errors: ../../tools/wireshark/src/packet-libvirt.c: In function 'dissect_libvirt_fds': ../../tools/wireshark/src/packet-libvirt.c:348:31: error: unused parameter 'tvb' [-Werror=unused-parameter] 348 | dissect_libvirt_fds(tvbuff_t *tvb, gint start, gint32 nfds) | ~~~~~~~~~~^~~ ../../tools/wireshark/src/packet-libvirt.c:348:41: error: unused parameter 'start' [-Werror=unused-parameter] 348 | dissect_libvirt_fds(tvbuff_t *tvb, gint start, gint32 nfds) | ~~~~~^~~~~ ../../tools/wireshark/src/packet-libvirt.c:348:55: error: unused parameter 'nfds' [-Werror=unused-parameter] 348 | dissect_libvirt_fds(tvbuff_t *tvb, gint start, gint32 nfds) | ~~~~~~~^~~~ At top level: ../../tools/wireshark/src/packet-libvirt.c:64:5: error: 'dissect_xdr_bool' defined but not used [-Werror=unused-function] 64 | dissect_xdr_##xtype(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf) \ | ^~~~~~~~~~~~ ../../tools/wireshark/src/packet-libvirt.c:88:1: note: in expansion of macro 'XDR_PRIMITIVE_DISSECTOR' 88 | XDR_PRIMITIVE_DISSECTOR(bool, bool_t, boolean) | ^~~~~~~~~~~~~~~~~~~~~~~ ../../tools/wireshark/src/packet-libvirt.c:64:5: error: 'dissect_xdr_float' defined but not used [-Werror=unused-function] 64 | dissect_xdr_##xtype(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf) \ | ^~~~~~~~~~~~ ../../tools/wireshark/src/packet-libvirt.c:86:1: note: in expansion of macro 'XDR_PRIMITIVE_DISSECTOR' 86 | XDR_PRIMITIVE_DISSECTOR(float, gfloat, float) | ^~~~~~~~~~~~~~~~~~~~~~~ ../../tools/wireshark/src/packet-libvirt.c:64:5: error: 'dissect_xdr_short' defined but not used [-Werror=unused-function] 64 | dissect_xdr_##xtype(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf) \ | ^~~~~~~~~~~~ ../../tools/wireshark/src/packet-libvirt.c:80:1: note: in expansion of macro 'XDR_PRIMITIVE_DISSECTOR' 80 | XDR_PRIMITIVE_DISSECTOR(short, gint16, int) | ^~~~~~~~~~~~~~~~~~~~~~~ ../../tools/wireshark/src/packet-libvirt.c: In function 'dissect_libvirt_message': ../../tools/wireshark/src/packet-libvirt.c:423:34: error: null pointer dereference [-Werror=null-dereference] 423 | vir_xdr_dissector_t xd = find_payload_dissector(proc, type, get_program_data(prog, VIR_PROGRAM_DISSECTORS), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 424 | *(gsize *)get_program_data(prog, VIR_PROGRAM_DISSECTORS_LEN)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Pavel Hrdina Reviewed-by: Ján Tomko --- src/internal.h | 4 ++++ tools/Makefile.am | 2 +- tools/wireshark/src/packet-libvirt.c | 17 ++++++++++++++--- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/internal.h b/src/internal.h index c054e3ce96..3bab6b4bfe 100644 --- a/src/internal.h +++ b/src/internal.h @@ -174,6 +174,10 @@ _Pragma ("GCC diagnostic push") #endif +#define VIR_WARNINGS_NO_UNUSED_FUNCTION \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wunused-function\"") + /* Workaround bogus GCC 6.0 for logical 'or' equal expression warnings. * (GCC bz 69602) */ #if BROKEN_GCC_WLOGICALOP_EQUAL_EXPR diff --git a/tools/Makefile.am b/tools/Makefile.am index 53df930e0a..eb8f269b48 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -378,7 +378,7 @@ if WITH_WIRESHARK_DISSECTOR ws_plugin_LTLIBRARIES = wireshark/src/libvirt.la wireshark_src_libvirt_la_CFLAGS = \ - -I wireshark/src $(WIRESHARK_DISSECTOR_CFLAGS) $(XDR_CFLAGS) + -I wireshark/src $(WIRESHARK_DISSECTOR_CFLAGS) $(XDR_CFLAGS) $(AM_CFLAGS) wireshark_src_libvirt_la_LDFLAGS = -avoid-version -module wireshark_src_libvirt_la_SOURCES = \ wireshark/src/packet-libvirt.h \ diff --git a/tools/wireshark/src/packet-libvirt.c b/tools/wireshark/src/packet-libvirt.c index 20b7a3ec81..2b499d2cf2 100644 --- a/tools/wireshark/src/packet-libvirt.c +++ b/tools/wireshark/src/packet-libvirt.c @@ -75,6 +75,8 @@ static gint ett_libvirt_stream_hole = -1; } \ } +VIR_WARNINGS_NO_UNUSED_FUNCTION + XDR_PRIMITIVE_DISSECTOR(int, gint32, int) XDR_PRIMITIVE_DISSECTOR(u_int, guint32, uint) XDR_PRIMITIVE_DISSECTOR(short, gint16, int) @@ -87,6 +89,8 @@ XDR_PRIMITIVE_DISSECTOR(float, gfloat, float) XDR_PRIMITIVE_DISSECTOR(double, gdouble, double) XDR_PRIMITIVE_DISSECTOR(bool, bool_t, boolean) +VIR_WARNINGS_RESET + typedef gboolean (*vir_xdr_dissector_t)(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf); typedef struct vir_dissector_index vir_dissector_index_t; @@ -345,7 +349,9 @@ dissect_libvirt_num_of_fds(tvbuff_t *tvb, proto_tree *tree) } static void -dissect_libvirt_fds(tvbuff_t *tvb, gint start, gint32 nfds) +dissect_libvirt_fds(tvbuff_t *tvb G_GNUC_UNUSED, + gint start G_GNUC_UNUSED, + gint32 nfds G_GNUC_UNUSED) { /* TODO: NOP for now */ } @@ -420,8 +426,13 @@ dissect_libvirt_payload(tvbuff_t *tvb, proto_tree *tree, return; /* No payload */ if (status == VIR_NET_OK) { - vir_xdr_dissector_t xd = find_payload_dissector(proc, type, get_program_data(prog, VIR_PROGRAM_DISSECTORS), - *(gsize *)get_program_data(prog, VIR_PROGRAM_DISSECTORS_LEN)); + const vir_dissector_index_t *pds = get_program_data(prog, VIR_PROGRAM_DISSECTORS); + const gsize *len = get_program_data(prog, VIR_PROGRAM_DISSECTORS_LEN); + + if (!len) + goto unknown; + + vir_xdr_dissector_t xd = find_payload_dissector(proc, type, pds, *len); if (xd == NULL) goto unknown; dissect_libvirt_payload_xdr_data(tvb, tree, payload_length, status, xd); -- 2.47.2