In the dissect_xdr_bytes() there's a comment that the string
allocated by xdr_bytes() can't be freed using xdr_free(). Well,
that is expected because xdr_bytes() used plain calloc() AND the
string is not an XDR struct but plain 'char *' type. Passing it
to xdr_free() must result in weird things happening.

Signed-off-by: Michal Privoznik <mpriv...@redhat.com>
---
 tools/wireshark/src/packet-libvirt.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/tools/wireshark/src/packet-libvirt.c 
b/tools/wireshark/src/packet-libvirt.c
index cb922b8070..eeacbcdf0e 100644
--- a/tools/wireshark/src/packet-libvirt.c
+++ b/tools/wireshark/src/packet-libvirt.c
@@ -195,8 +195,6 @@ dissect_xdr_bytes(tvbuff_t *tvb, proto_tree *tree, XDR 
*xdrs, int hf,
         const char *s = tvb_bytes_to_str(wmem_packet_scope(), tvb, start, len);
 
         proto_tree_add_bytes_format_value(tree, hf, tvb, start, len, NULL, 
"%s", s);
-        /* Seems I can't call xdr_free() for this case.
-           It will raises SEGV by referencing out of bounds call stack */
         free(val);
         return TRUE;
     } else {
-- 
2.32.0

Reply via email to