From c9f2b9b3edcc7d99a0eb9b506ff3b5f0101bd1a8 Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Sun, 25 Aug 2019 10:36:26 +0200 Subject: DCERPC: workaround that pidl always emits dissect_deferred_pointers() Commit f57cf9e56c90c0c0c724f415eff35821afaaf849 introduced a DISSECTOR_ASSERT() that revealed a deficiency in pidl: currently pidl unconditionally adds calls to dissect_deferred_pointers() which breaks dissecting any RPC function that has only scalar arguments: Warn Dissector bug, protocol RPCMDSSVC, in packet 51: epan/dissectors/packet-dcerpc.c:2940: failed assertion "list_ndr_pointer_list" Bug: 16022 Change-Id: I9d3522a3e17ef79b9a8a5acb018104ab398a512a Reviewed-on: https://code.wireshark.org/review/34364 Petri-Dish: Alexis La Goutte Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman --- epan/dissectors/packet-dcerpc.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'epan/dissectors/packet-dcerpc.c') diff --git a/epan/dissectors/packet-dcerpc.c b/epan/dissectors/packet-dcerpc.c index 9bf6cf3bc9..d888883edb 100644 --- a/epan/dissectors/packet-dcerpc.c +++ b/epan/dissectors/packet-dcerpc.c @@ -2936,8 +2936,13 @@ dissect_deferred_pointers(packet_info *pinfo, tvbuff_t *tvb, int offset, dcerpc_ int len; GSList *current_ndr_pointer_list; - /* The list is assumed to be non-empty, otherwise this should not be called. */ - DISSECTOR_ASSERT(list_ndr_pointer_list); + /* + * pidl has a difficiency of unconditionally emitting calls + * dissect_deferred_pointers() to the generated dissectors. + */ + if (list_ndr_pointer_list == NULL) { + return offset; + } /* Probably not necessary, it is supposed to prevent more pointers from * being added to the list. */ -- cgit v1.2.3