Wireshark-dev: [Wireshark-dev] How do I call the next dissector ...

From: Richard Sharpe <realrichardsharpe@xxxxxxxxx>
Date: Thu, 29 May 2014 22:24:52 -0700
Hi folks,

to fix the LDAP SASL integrity only stuff, I think I have to do
something like the following:

--- a/asn1/spnego/packet-spnego-template.c
+++ b/asn1/spnego/packet-spnego-template.c
@@ -1026,13 +1026,30 @@ dissect_spnego_krb5_cfx_wrap_base(tvbuff_t *tvb, int off

        if (pinfo->gssapi_data_encrypted) {
                checksum_size = 44 + ec;
+
+               proto_tree_add_item(tree, hf_spnego_krb5_sgn_cksum, tvb, offset,
+                                   checksum_size, ENC_NA);
+               offset += checksum_size;
+
        } else {
-               checksum_size = 12;
-       }
+               tvbuff_t *inner_token;
+               int inner_token_len = 0;
+               heur_dtbl_entry_t *hdtbl_entry;

-       proto_tree_add_item(tree, hf_spnego_krb5_sgn_cksum, tvb, offset,
-                           checksum_size, ENC_NA);
-       offset += checksum_size;
+               checksum_size = ec;
+
+               inner_token_len = tvb_reported_length_remaining(tvb, offset) -
+                                       ec;
+               inner_token = tvb_new_subset(tvb, offset, inner_token_len,
+                               tvb_reported_length(tvb));
+
+               call_some_dissector(inner_token, pinfo, tree, FALSE);
+
+               offset += inner_token_len;
+
+               proto_tree_add_item(tree, hf_spnego_krb5_sgn_cksum, tvb, offset,
+                                   checksum_size, ENC_NA);
+       }

        if(pinfo->decrypt_gssapi_tvb){
                /* if the caller did not provide a tvb, then we just use

So, how do I call the next dissector?

The only clue I have so far is that the inner token looks like it is
ASN.1 encoded because it starts with 0x3073...

Any clues out there?

-- 
Regards,
Richard Sharpe
(何以解憂?唯有杜康。--曹操)