diff options
author | Richard Sharpe <sharpe@ns.aus.com> | 2003-06-01 20:34:20 +0000 |
---|---|---|
committer | Richard Sharpe <sharpe@ns.aus.com> | 2003-06-01 20:34:20 +0000 |
commit | 47817bcb26d93f40da5235d72510f17e5c2dac98 (patch) | |
tree | 37db18262d7b6dbb0b46d2edca9be1dd60a97bed /packet-spnego.c | |
parent | 63884147dd65056c0b01fb97b7c2b6ef78016bfe (diff) |
Fix a small segmentation fault if we get an ASN.1 parse error, and
start to work on kerberos flags etc.
Also prettied up the case where the responseToken was an empty string.
svn path=/trunk/; revision=7767
Diffstat (limited to 'packet-spnego.c')
-rw-r--r-- | packet-spnego.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/packet-spnego.c b/packet-spnego.c index 1fe8a4128f..581f61ae1d 100644 --- a/packet-spnego.c +++ b/packet-spnego.c @@ -5,7 +5,7 @@ * Copyright 2002, Richard Sharpe <rsharpe@ns.aus.com> * Copyright 2003, Richard Sharpe <rsharpe@richardsharpe.com> * - * $Id: packet-spnego.c,v 1.49 2003/05/26 20:44:20 guy Exp $ + * $Id: packet-spnego.c,v 1.50 2003/06/01 20:34:20 sharpe Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -1106,19 +1106,26 @@ dissect_spnego_responseToken(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, offset = hnd->offset; - item = proto_tree_add_item(tree, hf_spnego_responsetoken, tvb, offset, - nbytes, FALSE); + item = proto_tree_add_item(tree, hf_spnego_responsetoken, tvb, offset -2 , + nbytes + 2, FALSE); subtree = proto_item_add_subtree(item, ett_spnego_responsetoken); + /* * Now, we should be able to dispatch after creating a new TVB. + * However, we should make sure that there is something in the + * response token ... */ - token_tvb = tvb_new_subset(tvb, offset, nbytes, -1); - if (next_level_dissector) - call_dissector(next_level_dissector, token_tvb, pinfo, subtree); - + if (nbytes) { + token_tvb = tvb_new_subset(tvb, offset, nbytes, -1); + if (next_level_dissector) + call_dissector(next_level_dissector, token_tvb, pinfo, subtree); + } + else { + proto_tree_add_text(subtree, tvb, offset-2, 2, "<Empty String>"); + } hnd->offset += nbytes; /* Update this ... */ done: @@ -1660,4 +1667,9 @@ proto_reg_handoff_spnego(void) gssapi_init_oid("1.2.840.113554.1.2.2", proto_spnego_krb5, ett_spnego_krb5, spnego_krb5_handle, spnego_krb5_wrap_handle, "KRB5 - Kerberos 5"); + + /* + * Find the data handle for some calls + */ + data_handle = find_dissector("data"); } |