
On Tue, Oct 14, 2025 at 08:31:47 +0200, Michal Privoznik via Devel wrote:
From: Michal Privoznik <mprivozn@redhat.com>
The main difference is that wmem_packet_scope() is gone [1] but the packet_info struct has 'pool` member which points to the allocator used for given packet.
Unfortunately, while we were given pointer to packet_info at the entry level to our dissector (dissect_libvirt() -> tcp_dissect_pdus() -> dissect_libvirt_message()) it was never propagated to generated/primitive dissectors.
But not all dissectors need to allocate memory, so mark the new argument as unused. And while our generator could be rewritten so that the argument is annotated as unused iff it's really unused, I couldn't bother rewriting it. It's generated code after all. Too much work for little gain.
Another significant change is that val_to_str() now requires new argument: pointer to allocator to use because it always allocates new memory [2][3].
IMO the change to propagate the struct needed to replace wmem_packet_scope could be separated from the change to the val_to_str convertor as it would make the patch a bit more digestable. Regardless no need to change it now.
1: https://gitlab.com/wireshark/wireshark/-/commit/5ca5c9ca372e06881b23ba9f4fdc... 2: https://gitlab.com/wireshark/wireshark/-/commit/b63599762468e4cf1783419a5556... 3: https://gitlab.com/wireshark/wireshark/-/commit/84799be215313e61b83a3eaf074f... Resolves: https://gitlab.com/libvirt/libvirt/-/issues/823 Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- tools/wireshark/src/packet-libvirt.c | 157 +++++++++++++++++++-------- tools/wireshark/util/genxdrstub.pl | 18 +-- 2 files changed, 119 insertions(+), 56 deletions(-)
static char * -G_GNUC_PRINTF(3, 0) -vir_val_to_str(const uint32_t val, +G_GNUC_PRINTF(4, 0) +vir_val_to_str(packet_info *pinfo, + const uint32_t val, const value_string *vs, const char *fmt) { - return val_to_str_wmem(wmem_packet_scope(), val, vs, fmt); +#if WIRESHARK_VERSION < 4006000 + return val_to_str_wmem(pinfo->pool, val, vs, fmt); +#else + return val_to_str(pinfo->pool, val, vs, fmt); +#endif }
The above hunk might need some update based on my query in previous patch. Once that is solved: Reviewed-by: Peter Krempa <pkrempa@redhat.com>