aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-gssapi.c
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2008-09-29 18:52:17 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2008-09-29 18:52:17 +0000
commitb4d74f250611f81b0c138b2e0c9d4f8825b694b5 (patch)
tree9cef5b71a21551c29caa357ad2d6477ac7ab27e4 /epan/dissectors/packet-gssapi.c
parent687b0422d33e189a613114104c19a183a4e5e398 (diff)
from metze
fallback to spnego_krb5_wrap for RFC4121 krb5 blobs svn path=/trunk/; revision=26295
Diffstat (limited to 'epan/dissectors/packet-gssapi.c')
-rw-r--r--epan/dissectors/packet-gssapi.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/epan/dissectors/packet-gssapi.c b/epan/dissectors/packet-gssapi.c
index 3b3aced2a6..5e8db215fb 100644
--- a/epan/dissectors/packet-gssapi.c
+++ b/epan/dissectors/packet-gssapi.c
@@ -112,6 +112,7 @@ gssapi_reassembly_init(void)
*/
static dissector_handle_t ntlmssp_handle;
+static dissector_handle_t spnego_krb5_wrap_handle;
static GHashTable *gssapi_oids;
@@ -309,8 +310,19 @@ dissect_gssapi_work(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* It could be NTLMSSP, with no OID. This can happen
for anything that microsoft calls 'Negotiate' or GSS-SPNEGO */
if ((tvb_length_remaining(gss_tvb, start_offset)>7) && (tvb_strneql(gss_tvb, start_offset, "NTLMSSP", 7) == 0)) {
- call_dissector(ntlmssp_handle, tvb_new_subset(gss_tvb, start_offset, -1, -1), pinfo, subtree);
- return_offset = tvb_length(gss_tvb);
+ return_offset = call_dissector(ntlmssp_handle,
+ tvb_new_subset(gss_tvb, start_offset, -1, -1),
+ pinfo, subtree);
+ goto done;
+ }
+
+ /* Maybe it's new GSSKRB5 CFX Wrapping */
+ if ((tvb_length_remaining(gss_tvb, start_offset)>2) &&
+ ((tvb_memeql(gss_tvb, start_offset, "\04\x04", 2) == 0) ||
+ (tvb_memeql(gss_tvb, start_offset, "\05\x04", 2) == 0))) {
+ return_offset = call_dissector(spnego_krb5_wrap_handle,
+ tvb_new_subset(gss_tvb, start_offset, -1, -1),
+ pinfo, subtree);
goto done;
}
@@ -618,6 +630,7 @@ proto_reg_handoff_gssapi(void)
dissector_handle_t gssapi_handle;
ntlmssp_handle = find_dissector("ntlmssp");
+ spnego_krb5_wrap_handle = find_dissector("spnego-krb5-wrap");
register_dcerpc_auth_subdissector(DCE_C_AUTHN_LEVEL_CONNECT,
DCE_C_RPC_AUTHN_PROTOCOL_SPNEGO,