Wireshark mailing list archives
Re: invalid output in pidl generated dcercp-mapi & dercp-nspi dissectors
From: Alexis La Goutte <alexis.lagoutte () gmail com>
Date: Fri, 12 Feb 2016 10:45:51 +0100
Hi Aurélien, Yes, There is some issue with mapi dissector actually we have no the same result when regenerate mapi dissector... https://code.wireshark.org/review/#/c/11476/ And yes, the code don't build... Cheers On Thu, Feb 11, 2016 at 4:26 PM, Aurélien Aptel <aaptel () suse com> wrote:
Hi, I'm in the process of syncing tools/pidl with samba (almost done, more on this later). Using master (0cd0844) bundled pidl, I wanted to make sure none of the generated dissectors were edited by hand so I've run the following (from epan/dissectors/pidl/README) to regenerate them: cd epan/dissectors/pidl for file in *.idl */*.idl; do echo "Generating dissector for $file" ../../../tools/pidl/pidl --includedir . --ws-parser -- $file; done cp packet-dcerpc*.* .. Most generated files are almost identical (slightly altered comments and whitespace because pidl wasn't run again) except for packet-dcerpc-mapi.[ch] and packet-dcerpc-nsapi.[ch] who differs greatly. These new generated files don't compile because they are malformed. Sample output: static int mapi_dissect_element_SPropValue_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *) { offset = mapi_dissect_SPropValue_CTR(tvb, offset, pinfo, tree, di, drep, hf_mapi_property_types, *); return offset; } Notice the lone * at the last param of the call. I've tried to debug it (but I don't know much about pidl) in tools/pidl/lib/Parse/Pidl/Wireshark/NDR.pm:446 (sub Element) if (defined $isoruseswitch) { my $type = $isoruseswitch->[0]; my $name = $isoruseswitch->[1]; my $switch_dt = getType($type); my $switch_raw_type = SwitchType($e, $type, "uint32"); if (not defined($switch_raw_type)) { die("Unknown type[$type]\n"); } my $switch_type = "g${switch_raw_type}"; $moreparam = ", $switch_type *".$name; if (($e->{PROPERTIES}->{switch_is} eq "") && ($switchvars{$name}) && #not a "native" type (!($type =~ /^uint(8|16|1632|32|3264|64)/))) { $param = $name; } elsif ( $switch_dt->{DATA}->{TYPE} eq "ENUM") { $param = $name; } else { $param = "*".$name; # ^^^^^^^^^^^^^^^^^ # here we prefix the param # with a star but $name is empty } Later in the same sub we call ElementLevel with $param eq "*" $self->ElementLevel($e,$_,$hf,$dissectorname.$add,$pn,$ifname,$param); Finally, in the sub ElementLevel we generate the wrong call: } elsif (defined($self->{conformance}->{types}->{$l->{DATA_TYPE}})) { $call= $self->{conformance}->{types}->{$l->{DATA_TYPE}}->{DISSECTOR_NAME}; $self->{conformance}->{types}->{$l->{DATA_TYPE}}->{USED} = 1; } else { Here $call is set to "offset = mapi_dissect_SPropValue_CTR(tvb, offset, pinfo, tree, di, drep, @HF@, @PARAM@);" And @PARAM@ is replaced with "*". -- Aurélien Aptel / SUSE Labs Samba Team GPG: 1839 CB5F 9F5B FB9B AA97 8C99 03C8 A49B 521B D5D3 SUSE Linux GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg) ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev () wireshark org> Archives: https://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-request () wireshark org ?subject=unsubscribe
___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev () wireshark org> Archives: https://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
Current thread:
- invalid output in pidl generated dcercp-mapi & dercp-nspi dissectors Aurélien Aptel (Feb 11)
- Re: invalid output in pidl generated dcercp-mapi & dercp-nspi dissectors Alexis La Goutte (Feb 12)
- Re: invalid output in pidl generated dcercp-mapi & dercp-nspi dissectors Aurélien Aptel (Feb 12)
- Re: invalid output in pidl generated dcercp-mapi & dercp-nspi dissectors Alexis La Goutte (Feb 12)