summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-rpc.c
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2012-03-28 09:42:05 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2012-03-28 09:42:05 +0000
commit3d81f3612b8c24951417215a38424e5ab5ca68b7 (patch)
tree654357958c27c7b9061b13e72ec9253d967caf64 /epan/dissectors/packet-rpc.c
parent7e112bec91edca3d5302157800e5c7bc6999ee5b (diff)
downloadwireshark-3d81f3612b8c24951417215a38424e5ab5ca68b7.tar.gz
ONC-RPC: When a GSS context is destroyed, that NULL procedure call does not carry neither a verifier nor a payload.
Stop decoding the packed immediately after the credentials so that we dont incorrectly flag these packets as malformed. svn path=/trunk/; revision=41817
Diffstat (limited to 'epan/dissectors/packet-rpc.c')
-rw-r--r--epan/dissectors/packet-rpc.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/epan/dissectors/packet-rpc.c b/epan/dissectors/packet-rpc.c
index 41f69d26b2..61206e076a 100644
--- a/epan/dissectors/packet-rpc.c
+++ b/epan/dissectors/packet-rpc.c
@@ -1770,7 +1770,6 @@ make_fake_rpc_prog_if_needed (rpc_prog_info_key *prpc_prog_key, guint prog_ver)
}
}
-
static gboolean
dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
tvbuff_t *frag_tvb, fragment_data *ipfd_head, gboolean is_tcp,
@@ -2294,12 +2293,17 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
offset += 16;
offset = dissect_rpc_cred(tvb, rpc_tree, offset, pinfo, rpc_conv_info);
- offset = dissect_rpc_verf(tvb, rpc_tree, offset, msg_type, pinfo);
-
/* pass rpc_info to subdissectors */
rpc_call->request=TRUE;
pinfo->private_data=rpc_call;
+ if (gss_proc == RPCSEC_GSS_DESTROY) {
+ /* there is no verifier for GSS destroy packets */
+ break;
+ }
+
+ offset = dissect_rpc_verf(tvb, rpc_tree, offset, msg_type, pinfo);
+
/* go to the next dissector */
break; /* end of RPC call */