diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2008-09-29 18:52:17 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2008-09-29 18:52:17 +0000 |
commit | b4d74f250611f81b0c138b2e0c9d4f8825b694b5 (patch) | |
tree | 9cef5b71a21551c29caa357ad2d6477ac7ab27e4 /epan/dissectors/packet-gssapi.c | |
parent | 687b0422d33e189a613114104c19a183a4e5e398 (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.c | 17 |
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, |